![]() |
VOOZH | about |
使用Java反射機制你可以運行期檢查一個類的變量信息(成員變量)或者獲取或者設置變量的值。通過使用java.lang.reflect.Field類就可以實現上述功能。在本節會帶你深入了解Field對象的信息。
獲取Field對象可以通過Class對象獲取Field對象,如下例:
Class aClass = ...//獲取Class對象 Field methods = aClass.getFields;返回的Field對象數組包含了指定類中聲明為公有的(public)的所有變量集合。
上面的例子返回的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類的實例。