JAVA反射系列之Field,java.lang.reflect.Field使用获取方法。
2019獨角獸企業重金招聘Python工程師標準>>>
首先必須明一點 Field類主要是用來輔助獲取和操作類的屬性的!
1.怎么通過反射獲取類的屬性
???? 先來看JDK提供的方法有如下幾種:
???????? a)Class.getDeclaredField(String name);
?? ? 返回一個 Field 對象,該對象反映此 Class 對象所表示的類或接口的指定已聲明字段。
???? b)Class.getDeclaredFields();
????? 返回 Field 對象的一個數組,這些對象反映此 Class 對象所表示的類或接口所聲明的所有字段。
??? c)Class.getField(String name);
?????? 返回一個 Field 對象,它反映此 Class 對象所表示的類或接口的指定公共成員字段。
??? d)Class.getField();
????????????? 返回一個包含某些 Field 對象的數組,這些對象反映此 Class 對象所表示的類或接口的所有可訪問公共字段。
??? 來一個例子來說明一下 :
?? 實體類:
???? 測試類:
import?java.lang.reflect.Field; import?java.util.Date; /***?@ClassName:?ReflectFieldTest*?@Description:?反射Field測試。*?@author?JoseanLuo??*?@date?2014-3-18?下午5:16:17*?@version?V1.0?*/ public?class?ReflectFieldTest {public?static?void?main(String[]?args) {????Student?stu=new?Student();stu.setId(1L);stu.setName("Josean");stu.setNo("201403185203344");stu.setCreatedate(new?Date());try{Field?property1=stu.getClass().getDeclaredField("name");System.out.println(property1);//private?java.lang.String?com.cx.test.Student.nameField?property3=stu.getClass().getField("nickname");System.out.println(property3);//public?java.lang.String?com.cx.test.Student.nickname//錯誤方法?getField系列方法只能獲取公共字段//Field?property2=stu.getClass().getField("name");//System.out.println(property2);//會拋java.lang.NoSuchFieldException}?catch?(SecurityException?e){e.printStackTrace();}?catch?(NoSuchFieldException?e){e.printStackTrace();} }}?
2.進行屬性獲取更改
?? 得到這個Field之后你就可以獲取他的值或者設置他的值了。
?? 獲取他的值用get類型方法,他針對常見類型提供了對應get方法,這里就不一一列舉了。
?? 值得注意的是獲取私有屬性的時候必須先設置Accessible為true,然后才能獲取。
?? 同理設置的時候調用set類型方法,這里也不一一列舉了,下面放代碼。
這個是控制臺輸出:
copyman private?java.lang.Long?com.cx.test.Student.id false 1 private?java.lang.String?com.cx.test.Student.name true Josean private?java.util.Date?com.cx.test.Student.createdate false Tue?Mar?18?18:19:39?CST?2014 private?java.lang.String?com.cx.test.Student.no false 201403185203344 public?java.lang.String?com.cx.test.Student.nickname false copyman 名字被我改了,哈哈是不是覺得很很簡單呢 。
轉載于:https://my.oschina.net/u/1407116/blog/209383
總結
以上是生活随笔為你收集整理的JAVA反射系列之Field,java.lang.reflect.Field使用获取方法。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PLSQL_性能优化系列15_Oracl
- 下一篇: ThreadLocal线程范围内的共享变