2017-09-23 126 views
0

我想它返回被給予對通過如何訪問從Java中的屬性定義類的對象的屬性?

public static Object createObject(String classname){ 
    Object myobject = null; 
    try { 
      Class myclass = Class.forName(classname); 
      myobject = myclass.newInstance(); 
      System.out.println(myobject.objectAttribute); 
    }catch(Exception e){ 
    } 
    return myobject; 

} 

欲然後能夠打印出一個屬性(例如objectAttribute)傳遞的字符串的值的類depnding的對象的方法,我知道將由類名可能代表的所有可能的類來持有。可能的類是在單獨的文件中定義的。但編譯器給出的錯誤無法找到符號objectAttribute。我如何訪問此對象的屬性?

對不起,措辭不當問題

感謝任何幫助

+1

如果你想使用反射帶班工作動態地,也許你應該閱讀關於它的文檔**:[Java教程 - 反思API](https://docs.oracle.com/javase/tutorial/reflect/index.html) – Andreas

回答

0

您可以使用getFields()方法來訪問所有的字段,如:

Class myclass = Class.forName("ClassName"); 
Field[] fields = myclass.getDeclaredFields(); 
for(Field field : fields) { 
    System.out.println(field.getName()); 
} 
0

當編譯器說,一個java.lang.Object沒有按」沒有objectAttribute字段,因此您無法通過Object參考訪問它。如果你有一些已知的基類,提供這個屬性,你可以只投myobject它:

System.out.println(((BaseClass) myobject).objectAttribute); 

否則,你可以依靠反射:

Field field = myclass.getField("objectAttribute"); 
System.out.println(field.get(myobject));