首頁 > 易卦

第九十一篇:使用Class物件訪問和操作類的成員變數

作者:由 米粒教育 發表于 易卦日期:2023-01-25

物件屬性是變數嗎

訪問類的成員變數

使用Class物件可以獲取類定義的所有成員變數,獲取的成員變數以Field型別的物件或陣列方式返回,每個Field物件代表一個成員變數,利用Field物件提供的方法可以操作該類的成員變數。

第九十一篇:使用Class物件訪問和操作類的成員變數

Class類定義瞭如下方法,用於訪問類的成員變數。

● Field[] getFields()

該方法返回一個包含類成員變數物件的陣列,該陣列包含該類物件表示的類或介面的所有可訪問的公共成員變數。

● Field getField(String name)

該方法返回一個類成員變數物件,該成員變數物件必須是公共成員。name引數是一個字串,指定所需成員變數的名稱。

● Field[] getDeclaredFields()

該方法返回一個類成員變數物件陣列,該陣列包括該類的所有成員變數。這包括公共、受保護、預設(包)訪問和私有成員變數,但不包括繼承的成員變數。

● Field getDeclaredField(String name)

該方法返回一個類成員變數物件。name引數是一個字串,指定所需欄位的簡單名稱。

案例1:

建立FieldTest1測試類,應用Class類的getFields()方法獲取Person類的成員變數。

在PCoreUnit8專案新建field包,在field包下新建FieldTest1類。程式碼如下:

import java。lang。reflect。Constructor;

import java。lang。reflect。Field;

import constructor。Person;

public class FieldTest1 {

public static void main(String[] args) {

// 獲取Person類的Class物件

Class<?> personClass = (Class)Person。class;

try {

//透過class。getFields()獲取所有具有public許可權的成員變數

Field[] fields = personClass。getFields();

for (Field field : fields) {

System。out。println(“透過class。getFields()獲取所有具有public許可權的成員變數:” + field);

}

//透過class。getField(name)獲取指定名稱的成員變數

//成員變數必須是public訪問許可權

Field field1 = personClass。getField(“job”);

System。out。println(“透過class。getField(name)獲取指定名稱的成員變數” + field1);

//透過class。getDeclaredFields獲取所有的成員變數

Field[] fields1 = personClass。getDeclaredFields();

for (Field dfield : fields1) {

System。out。println(“透過class。getDeclaredFields獲取所有的成員變數:” + dfield);

}

//透過class。getDeclaredField(name)獲取指定名稱的成員變數

Field field2 = personClass。getDeclaredField(“name”);

System。out。println(“透過class。getDeclaredField(name)獲取指定名稱的成員變數” + field2);

} catch (NoSuchFieldException e) {

// TODO Auto-generated catch block

e。printStackTrace();

} catch (SecurityException e) {

// TODO Auto-generated catch block

e。printStackTrace();

}

}

}