VOOZH about

URL: https://read01.com/M30Jna.html

⇱ Java Reflection:變量 - 壹讀


Sunday, Apr 12, 2026

Java Reflection:變量

2014/11/10 來源:併發編程網

使用Java反射機制你可以運行期檢查一個類的變量信息(成員變量)或者獲取或者設置變量的值。通過使用java.lang.reflect.Field類就可以實現上述功能。在本節會帶你深入了解Field對象的信息。

獲取Field對象

可以通過Class對象獲取Field對象,如下例:

Class aClass = ...//獲取Class對象 Field methods = aClass.getFields;

返回的Field對象數組包含了指定類中聲明為公有的(public)的所有變量集合。

如果你知道你要訪問的變量名稱,你可以通過如下的方式獲取指定的變量: Class aClass = MyObject.class Field field = aClass.getField("someField");

上面的例子返回的Field類的實例對應的就是在MyObject類中聲明的名為someField的成員變量,就是這樣:

public class MyObject{ public String someField = null; }

在調用getField方法時,如果根據給定的方法參數沒有找到對應的變量,那麼就會拋出NoSuchFieldException。

變量名稱

一旦你獲取了Field實例,你可以通過調用Field.getName方法獲取他的變量名稱,如下例:

Field field = ... //獲取Field對象 String fieldName = field.getName; 變量類型

你可以通過調用Field.getType方法來獲取一個變量的類型(如String, int等等)

Field field = aClass.getField("someField"); Object fieldType = field.getType; 獲取或設置(get/set)變量值

一旦你獲得了一個Field的引用,你就可以通過調用Field.get或Field.set方法,獲取或者設置變量的值,如下例:

Class aClass = MyObject.class Field field = aClass.getField("someField"); MyObject objectInstance = new MyObject; Object value = field.get(objectInstance); field.set(objetInstance, value);

傳入Field.get/Field.set方法的參數objetInstance應該是擁有指定變量的類的實例。在上述的例子中傳入的參數是MyObject類的實例,是因為someField是MyObject類的實例。

如果變量是靜態變量的話(public static)那麼在調用Field.get/Field.set方法的時候傳入null做為參數而不用傳遞擁有該變量的類的實例。(譯者註:你如果傳入擁有該變量的類的實例也可以得到相同的結果)
您可能感興趣
免責聲明:本文內容來源于併發編程網,文章觀點不代表壹讀立場,如若侵犯到您的權益,或涉不實謠言,敬請向我們提出檢舉
最新文章 / 服務條款 / 私隱保護 / DMCA / 聯絡我們

壹讀/READ01.COM