ここでは、インターフェイスを実装するPOJOクラスのセットがありますが、共通の属性はありません。別のメソッドからPOJOを動的に初期化する
public interface MainIfc {}
class Ifc1 implements MainIfc {
private String a1;
public String getA1() {
return a1;
}
public void setA1(String a1) {
this.a1 = a1;
}
}
class Ifc2 implements MainIfc {
private String x1;
private String x2;
public String getX1() {
return x1;
}
public void setX1(String x1) {
this.x1 = x1;
}
public String getX2() {
return x2;
}
public void setX2(String x2) {
this.x2 = x2;
}
}
そして私は、私は別の値と値を実際のPOJOに基づいて返されるPOJOの種類を取得するために使用できる方法がいくつかあり、これらのPOJOクラスと組み合わせて使用します。
public class GetIfc {
public Class getIfcType(int code) {
if (code==1)
return Ifc1.class;
else
return Ifc2.class;
}
public MainIfc getIfc(int code) {
if (code==1) {
Ifc1 thisIfc = new Ifc1();
thisIfc.setA1("Ifc1");
return thisIfc;
} else {
Ifc2 thisIfc = new Ifc2();
thisIfc.setX1("Ifc2");
thisIfc.setX2("Ifc2");
return thisIfc;
}
}
}
私のコードで具体的なPOJOを安全に読み取ってgetters/setterを使用する方法はありますか?私はReflectionに基づいて答えを出すが、それは私のために働いていないかなりの質問を行った。 getters/setterは表示されません。返されたオブジェクトのgetClass()
私はそれがMainIfc
インターフェイスであることを確認します。
解決しようとしている設計上の問題は、私が設計しようとしているREST APIオートメーションフレームワークに関係しています。基本的に私はClientResponse
パーサを持っており、私が探しているPOJOを返信します。しかし、返されるPOJOのタイプについてテストケースを書いている人が心配することは望ましくありません。だから私は型とインスタンス化されたPOJOを返すことができると思っていたので、値を取得しましたが、これを動的に達成する方法には悩まされます。
私はあなたが何をしようとしているのか不明です。私はBeanのような行動をしたいと思っていますが、間違いかもしれません。 – Fildor
"返されたオブジェクトの.getClass()を呼び出すと、MainIfcインターフェイスになっています。"私はそれが信じがたいことがわかります。この動作を示すコードを少し追加してください。また、明確にしてください:あなたはそれを動作させる方法を探していますか、これを解決するために適切なオブジェクト指向の方法に興味がありますか? – Cephalopod
すべての(public)フィールドを 'Field'オブジェクトのリストとして返すメソッドをクラスに追加することができます。おそらくMainIfcのメンバーです。しかし、私はこれがX-Y-Questionのように感じます。あなたが解決しようとしている問題は何ですか? – Fildor