2017-09-23 12 views
0

は、私はその後、属性(例えばobjectAttribute)をプリントアウトすることができるようにしたい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; 

} 

を通過する文字列の値にクラスdepndingを与えられているオブジェクトを返すメソッドをしたいという私classnameが表す可能性のあるすべてのクラスによってknowが保持されます。可能なクラスは別々のファイルで定義されています。しかし、コンパイラはシンボルobjectAttributeを見つけることができないというエラーを出します。このオブジェクトの属性にどのようにアクセスできますか?

あなたはすべてのフィールドにアクセスするためのgetFields()方法、例えば使用することができます任意のヘルプ

+1

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

をそうしないと、反射に頼ることができます動的に、多分あなたは**それに関する文書**を読むべきです:[ Java™チュートリアル - The Reflection API](https://docs.oracle.com/javase/tutorial/reflect/index.html) – Andreas

答えて

0

ため

感謝の悪い表現の質問のために申し訳ありません:コンパイラが言うように、doesnのjava.lang.Object

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

」をtにはobjectAttributeフィールドがあるため、Object参照でアクセスすることはできません。あなたはこの属性を提供していくつかの既知の基本クラスを持っている場合、あなたはそれにmyobjectをキャストすることができます:あなたはクラスで動作するようにリフレクションを使用する場合は

Field field = myclass.getField("objectAttribute"); 
System.out.println(field.get(myobject)); 
関連する問題