私はJavaジェネリックでこの問題を解決できると確信していますので、私は尋ねたいと思いました...それぞれが共通のインターフェースを実装するクラスがいくつかあります。 getData
と呼ばれる一般的なインターフェイスでは、これを一般化したいと考えています。私が持っている問題は、各クラスが異なるオブジェクト型を返すということです。理想的にはこれらを汎用的にしたいと思っていて、getData
を呼び出す実装クラスで元の型に戻してください。 Object
にキャストして特定のタイプに戻すと、それがどのように機能するか見ることができますが、Genericsで同じ最終結果を達成できますか?ここでこれを解決するためのより良い方法のためのジェネリックの使用
は、問題の概要を説明するためにいくつかの擬似コードです:
public ClassA implements interface x {
private CustomObjectA customObjectA;
private Map<DateTime, Map<String, CustomObjectA>> dataMap;
...
public Map<DateTime, Map<String, CustomObjectA>> getData() {
return this.dataMap;
}
}
public ClassB implements interface x {
private CustomObjectA customObjectB;
private Map<DateTime, Map<String, CustomObjectB>> dataMap;
...
public Map<DateTime, Map<String, CustomObjectB>> getData() {
return this.dataMap;
}
}
public interface x {
public Map<DateTime, Map<String, genericObject>> getData();
}
public ClassC {
public testGeneric(x objX) {
CustomObjectA cOA = objX.getData();
CustomObjectB cOB = objX.getData();
}
}
は完全に無関係なCustomObjectBとCustomObjectAですか? –
はい、彼らは完全に異なるメンバーを持っています – Hoofamon