2

私はPython開発者ですが、ディクテーションからパラメータを取得するPythonインスタンスを作成するのと同じように、ツリーマップからパラメータを使用してJavaインスタンスを作成したいと考えています...Javaリフレクションを介して作成しようとしています。しかし、私は解決策を見つけることができません。

誰でも私に手を差し伸べることができますか?THX

4

2 に答える 2

1

私がフォローしているかどうかはわかりませんが、私が理解していることから、オブジェクトのプロパティをその場で作成しようとしています。

言語が[Python とは異なり]静的に型付けされているためです。

Java では、オブジェクトのすべてのフィールドをコンパイル時に作成する必要があります。リフレクションは、オブジェクトを操作するのに役立ちますが、構造を完全に変更することはできません。

回避策は、を使用し、そこMap<String,Object>にプロパティを保持することです。このソリューションを使用するためにリフレクションは必要ありません [リフレクションは安全ではなく、プログラムの全体的なパフォーマンスを低下させる傾向があるため、これは良いことです]。

于 2012-04-11T07:59:45.037 に答える
0

これはあなたが探しているものです! クラスを維持するためのマップを作成します。

private static Map<String, Class<? extends MySuperClass>> classesMap = new HashMap<String, Class<? extends MySuperClass>>();

クラス オブジェクトをマップに配置する

static {
      classesMap.put("PERSON_CLASS", Person.class); 
      classesMap.put("ADDRESS_CLASS", Address.class);
}

次に、指定されたクラスのインスタンスを返す getInstance メソッド。

private static MySuperClass getInstance(String classNameConstant) throws Exception{
     Class<? extends MySuperClass> myClass = classesMap.get(classNameConstant);
     if(myClass!=null){
        return myClass.newInstance();
     }
     return null;
}

お役に立てれば。注: 私は python を知りません。

于 2012-04-11T08:13:06.213 に答える