2015-10-03 44 views
-1
Class<?> c = Class.forName("other"); 
Field[] field = c.getDeclaredFields(); 
System.out.println("name of field: "+fieldA[0].getName()); 

我可以從其他.java文件中檢索字段名稱,但不能檢索值。如何從其他java類中檢索字段值?

例子:

<other.java file> public int namefield = 5; 

從我main.java執行文件

我想檢索的字段名稱和值。

display: name of field: namefield value: 5 
+0

請看這裏的Field文檔:http:它列出了用於檢索值的各種'get()','getInt()'等方法。但是,如果您想要的字段是公開的,爲什麼不直接訪問它? –

回答

0

假設你的類,你要檢查的是:

public class ClassA { 
    private String someString = "foo"; 
    public String anotherString = "bar"; 
} 

ClassA.class.getDeclaredFields()的調用將返回一個數組包含兩個元素,但作爲領域之一是私有的,不能直接訪問。爲了能夠爲您必須使它進入第一:

ClassA objectOfTypeClassA = ... 
for (Field f : objectOfTypeClassA.getClass().getDeclaredFields()) { 
    f.setAccessible(true); 
    System.out.println("Value of "+f.getName()+" in class "+ClassA.class.getName()+" is "+f.get(objectOfTypeClassA)); 
} 

檢索所需沿着其上定義的字段值的對象實例傳遞一個非靜態字段的值。

0

閱讀java.lang.reflect.Fieldjavadoc。在那裏,你可以看到方法getInt()

你必須調用field.getInt(object),其中的對象是類的一個實例other

0

無法檢索字段值,這是因爲(非靜態)字段的值是一個屬性的一個對象,而你只能通過反射訪問它的類。

獲取字段的值,你首先需要other類的對象anObject,然後你可以調用

field.getInt(anObject); 

獲取其名稱字段中的值。

相關問題