包含javafield的詞條

本文目錄一覽:

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-hk/n/309285.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-04 19:30
下一篇 2025-01-04 19:30

相關推薦

發表回復

登錄後才能評論