本文目錄一覽:
Java中的類的field到底是指什麼?
field就是類的屬性,在類級別的定義用static,普通成員變數
方法參數是局部變數,實際上就是這麼區分的。
java field獲取值
很多朋友都想知道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
java field為什麼需要單獨導入
因為Field並不是java.lang包下的直接子類
而是java.lang.reflect包下的子類,所以需要導包,只有lang包下的直接子類不需要導包例如:java.lang.String就不需要導包
java中的field是什麼意思
field的意思是「欄位」,這裡可以理解成變數.
field的解釋:
class A{
private int a; //private field私有域
protected double b; //protected field保護域
public String c; //public field公共域
A d; //default access field默認訪問域
public static Object e; //public static field公共靜態域
.
}
java中的field什麼意思
主要方法
getType(): 獲取屬性聲明時類型對象(返回class對象)
getGenericType() : 返回屬性聲的Type類型
getName() : 獲取屬性聲明時名字
getAnnotations() : 獲得這個屬性上所有的注釋
getModifiers() : 獲取屬性的修飾
isEnumConstant() : 判斷這個屬性是否是枚舉類
isSynthetic() : 判斷這個屬性是否是 複合類
get(Object obj) : 取得obj對象這個Field上的值
set(Object obj, Object value) : 向obj對象的這個Field設置新值value
Field類中最常用的是get(Object obj)和set(Object obj, Object value)這兩個方法,所以這兩個方法是最重要的。
getType() 和 getGenericType()的區別 :
1.首先是返回的類型不一樣,一個是Class對象一個是Type介面
2.如果屬性是一個泛型,從getType()只能得到這個屬性的介面類型。但從getGenericType()還能得到這個泛型的參數類型。
isEnumConstant()和isSynthetic() :
對象中如果有屬性是枚舉類或複合類,用這兩個方法返回的值並不是我們想像的true而是false。其實這兩個方法是對編譯生成的才有效。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/309285.html