私はPython開発者ですが、ディクテーションからパラメータを取得するPythonインスタンスを作成するのと同じように、ツリーマップからパラメータを使用してJavaインスタンスを作成したいと考えています...Javaリフレクションを介して作成しようとしています。しかし、私は解決策を見つけることができません。
誰でも私に手を差し伸べることができますか?THX
私はPython開発者ですが、ディクテーションからパラメータを取得するPythonインスタンスを作成するのと同じように、ツリーマップからパラメータを使用してJavaインスタンスを作成したいと考えています...Javaリフレクションを介して作成しようとしています。しかし、私は解決策を見つけることができません。
誰でも私に手を差し伸べることができますか?THX
私がフォローしているかどうかはわかりませんが、私が理解していることから、オブジェクトのプロパティをその場で作成しようとしています。
言語が[Python とは異なり]静的に型付けされているためです。
Java では、オブジェクトのすべてのフィールドをコンパイル時に作成する必要があります。リフレクションは、オブジェクトを操作するのに役立ちますが、構造を完全に変更することはできません。
回避策は、を使用し、そこMap<String,Object>
にプロパティを保持することです。このソリューションを使用するためにリフレクションは必要ありません [リフレクションは安全ではなく、プログラムの全体的なパフォーマンスを低下させる傾向があるため、これは良いことです]。
これはあなたが探しているものです! クラスを維持するためのマップを作成します。
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 を知りません。