オーバーライドする必要がある抽象クラスにジェネリックを適切に実装する際に問題があります。
public abstract class AbstractSerachView {
DataStore<AbstractCriteria, AbstractResults, AbstractService> resultsStore;
public abstract DataStore<AbstractCriteria, AbstractResults, AbstractService> getResultsStore();
}
子クラスは次のとおりです。
public class TravelSearchView extends AbstractSearchView {
DataStore<TravelCriteria, TravelResults, TravelService> resultsStore;
public DataStore<TravelCriteria, TravelResults, TravelService> getResultsStore() {
return resultsStore;
}
}
この種の抽象化はまったく機能しませんが、何らかの方法でこの作業を行うことができれば非常にありがたいです. ここで正しいアプローチは何ですか?ジェネリック型の経験はほとんどありません。
問題は、Eclipse が子クラスのエラーを示していることです。戻り値の型は AbstractSearchView.getResultsStore() と互換性がありません。
さらに、子クラスの get メソッドを 3 つの抽象型のままにし、変数を 3 つの travel 型でオーバーライドすると、Eclipse が示すリターン行を除いてすべて問題ありません: Type mismatch: Cannot convert from DataStore to DataStore