欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java反射獲取一個object屬性值代碼解析

 更新時間:2017年12月20日 08:39:33   作者:qq_36523667  
這篇文章主要介紹了java反射獲取一個object屬性值代碼解析,具有一定借鑒價值,需要的朋友可以參考下。

有些時候你明明知道這個object里面是什么,但是因為種種原因,你不能將它轉(zhuǎn)化成一個對象,只是想單純地提取出這個object里的一些東西,這個時候就需要用反射了。

假如你這個類是這樣的:

private class User {
	String userName;
	String userPassword;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserPassword() {
		return userPassword;
	}
	public void setUserPassword(String userPassword) {
		this.userPassword = userPassword;
	}
}

我們new一個,賦值,向上轉(zhuǎn)型為object

User user = new User();
user.setUserName("徐風(fēng)來");
user.setUserPassword("1596666");
Object object = user;

獲取屬性名,用一個數(shù)組保存起來

java.lang.reflect.Field[] fields = object.getClass().getDeclaredFields();
for (java.lang.reflect.Field f : fields) {
  Log.i("xbh", f.getName());
}

輸出

12-17 12:02:10.199 22949-22949/com.example.wechat I/xbh: this$0
12-17 12:02:10.199 22949-22949/com.example.wechat I/xbh: userName
12-17 12:02:10.199 22949-22949/com.example.wechat I/xbh: userPassword
12-17 12:02:10.199 22949-22949/com.example.wechat I/xbh: $change
12-17 12:02:10.199 22949-22949/com.example.wechat I/xbh: serialVersionUID

可以看到出現(xiàn)了我們定義的兩個屬性名了,另外3個自帶的別管了

獲取屬性值,先獲取get方法,再通過調(diào)用get方法去取

java.lang.reflect.Method[] method = object.getClass().getDeclaredMethods();//獲取所有方法
for(java.lang.reflect.Method m:method) {
  System.<em>out</em>.println(m.getName());
  if (m.getName().startsWith("get")) {
    Object o = null;
    try {
      o = m.invoke(object);
    } catch (IllegalAccessException | InvocationTargetException e) {
      e.printStackTrace();
    }
    if (o != null && !"".equals(o.toString())) {
      Log.i("xbh", o.toString());
    }
  }

輸出
12-17 12:09:33.429 29677-29677/com.example.wechat I/xbh: 徐風(fēng)來
12-17 12:09:33.429 29677-29677/com.example.wechat I/xbh: 1596666

那個if語句就是獲取get開頭的方法

try里面的invoke就是執(zhí)行這個方法,把返回值放到o里

不通過get方法來獲取屬性值

java.lang.reflect.Field fi = null;
//獲取屬性
try {
	fi = object.getClass().getDeclaredField("userName");
}
catch (NoSuchFieldException e) {
	e.printStackTrace();
}
fi.setAccessible(true);
//設(shè)置當(dāng)前對象對model私有屬性的訪問權(quán)限
try {
	Log.i("xbh", fi.get(object).toString());
}
catch (IllegalAccessException e) {
	e.printStackTrace();
}

輸出
12-17 12:17:34.419 4732-4732/com.example.wechat I/xbh: 徐風(fēng)來

直接通過getDeclaredField方法就可以獲?。ㄗ⒁夂蜕厦娴膅etDeclaredFields方法區(qū)分)。但是如果你這個屬性是私有的,你肯定就訪問不到,所以這里把這個屬性設(shè)置為public(setAccessible)就可以訪問了。

此外如果你獲取的是json數(shù)據(jù),想解析里面的1個對象不必了,直接轉(zhuǎn)型成map就可以了。

比如

{"code":0,"list":[{"userName":"3294727437","userPassword":"xbh1","userAvatar":"https://img1.imgtn.bdimg.com/it/u\u003d37460727\u0026gp\u003d0.jpg"}]}

你通過jsonarray(“l(fā)ist”)獲取了后面的集合,再通過get(i)獲取了單個的對象。其實一開始的對象是被轉(zhuǎn)成map了,仔細(xì)看看是不是。所以不需要反射獲取屬性了,直接轉(zhuǎn)型成map就可以取數(shù)據(jù)了。

Map<string, string=""> map = (Map<string, string="">) u;
map.get("userAvatar");</string,></string,>

總結(jié)

以上就是本文關(guān)于java反射獲取一個object屬性值代碼解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • Java類成員訪問權(quán)限控制知識總結(jié)

    Java類成員訪問權(quán)限控制知識總結(jié)

    這篇文章主要介紹了Java類成員訪問權(quán)限控制知識總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • SpringBoot+fileUpload獲取文件上傳進度

    SpringBoot+fileUpload獲取文件上傳進度

    這篇文章主要為大家詳細(xì)介紹了SpringBoot+fileUpload獲取文件上傳進度,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • SpringCloud OpenFeign使用詳解

    SpringCloud OpenFeign使用詳解

    在springcloud微服務(wù)生態(tài)體系下,作為服務(wù)之間相互調(diào)用的重要組件openfeign,在其中承擔(dān)著非常重要的作用,本篇以springcloud中提供的遠(yuǎn)程接口調(diào)用組件openfeign為例,來聊聊openfeign的詳細(xì)使用,感興趣的同學(xué)可以參考閱讀
    2023-05-05
  • Java編程小實例—數(shù)字時鐘的實現(xiàn)代碼示例

    Java編程小實例—數(shù)字時鐘的實現(xiàn)代碼示例

    正所謂拳不離手曲不離口,java學(xué)習(xí)的過程中,練習(xí)還是要多一點比較好。接下來分享給大家一個Java編程的小實例,供朋友們參考。
    2017-10-10
  • java外部類與內(nèi)部類的關(guān)系詳解

    java外部類與內(nèi)部類的關(guān)系詳解

    本文詳細(xì)講解了java外部類與內(nèi)部類的關(guān)系,用代碼演示了外部類調(diào)用內(nèi)部類的方法。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • @Configuration與@Component作為配置類的區(qū)別詳解

    @Configuration與@Component作為配置類的區(qū)別詳解

    這篇文章主要介紹了@Configuration與@Component作為配置類的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • SpringBoot如何通過webjars管理靜態(tài)資源文件夾

    SpringBoot如何通過webjars管理靜態(tài)資源文件夾

    這篇文章主要介紹了SpringBoot如何通過webjars管理靜態(tài)資源文件夾,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • Springboot整合Spring Cloud Kubernetes讀取ConfigMap支持自動刷新配置的教程

    Springboot整合Spring Cloud Kubernetes讀取ConfigMap支持自動刷新配置的教程

    這篇文章主要介紹了Springboot整合Spring Cloud Kubernetes讀取ConfigMap支持自動刷新配置,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • SpringBoot整合第三方技術(shù)的實現(xiàn)

    SpringBoot整合第三方技術(shù)的實現(xiàn)

    本文主要介紹了SpringBoot整合第三方技術(shù)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Java順序表實現(xiàn)圖書管理系統(tǒng)

    Java順序表實現(xiàn)圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java順序表實現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評論