很多朋友都想知道java field怎么獲取值?下面就一起來了解一下吧~
定義
public?Object?get(Object?obj)
1. 如果字段不是靜態字段的話,要傳入反射類的對象.如果傳null是會報java.lang.NullPointerException?
2. 如果字段是靜態字段的話,傳入任何對象都是可以的,包括null?
例子
1. 獲取屬性的值
public?static?void?main(String[]?args)?throws?Exception?{ ????//使用反射第一步:獲取操作類FieldDemo所對應的Class對象 ????Class??>cls?=?Class.forName("com.testReflect.FieldDemo"); ????//使用FieldDemo類的class對象生成?實例 ????Object?obj?=?cls.newInstance(); ????//通過Class類中getField(String?name):?獲取類特定的方法,name參數指定了屬性的名稱 ????Field?field?=?cls.getField("num1"); ????//拿到了Field類的實例后就可以調用其中的方法了 ????//方法:get(Object?obj)?返回指定對象obj上此?Field?表示的字段的值 ????System.out.println("屬性值:??"?+?field.get(obj)); ????//方法:?set(Object?obj,?Object?value)??將指定對象變量上此?Field?對象表示的字段設置為指定的新值 ????field.set(obj,?55); ????System.out.println("修改屬性值后?-->?get(Object?obj):??"?+?field.get(obj)); }
2. get()傳值
class?A?{?? ?????int?fild=3;?? ????static?int?staticFild=4;?? }? public?class?FiledTest?? {?? ????public?static?void?main(String[]?args)?throws?Exception?? ????{?? ????????Field?field=A.class.getDeclaredField("fild");?? ????????int?a=?(Integer)field.get(new?A())?;?? //????????int?c=?(Integer)field.get(null)?;?//不是靜態字段不能傳null?? ????????System.out.println(a);?? ?? ????????Field?staticfield=A.class.getDeclaredField("staticFild");?? ????????int?b=?(Integer)staticfield.get("")?;?? ????????int?d=?(Integer)staticfield.get(null)?;?? ????????System.out.println(b);?? ????????System.out.println(d);?? ????}?? }
運行結果:
3? 4? 4
以上就是小編今天的分享,希望能幫到大家。