私はUIに送る応答を含むクラスを持っています。私は別のcustomObjectリストを持っていますCustomObjectを拡張し、その応答クラスに基づいているカスタムオブジェクトなどのさまざまなオブジェクトを持つことができネストされたクラス内の汎用多型戻り型
class Response<T extends CustomObject> {
private String var1;
private String var2;
private List<T> custom; (eg. customOne, customTwo)
}
:として青写真です。
サービスロジックを適用した後、私は生の応答を得て、カスタムオブジェクトに基づいて私は異なって解析しようとします。私が選んだされているオブジェクトに基づいて呼び出される抽象構文解析機能を持っている
class CustomOne extends CustomObject {
private String v1;
}
class CustomTwo extends CustomObject {
private String v2;
}
:として
CusomOneとCustomTwoは異なる構造を持つことになります。この関数は次のように定義されます。
public abstract ResponsePayLoad<? extends CustomObject> parseResponse(String response);
ReponsePayLoadは、CustomObjectを含む他のフィールドを持つ別のクラスです。クラスResponsePayLoadのための青写真として次のとおりです。
class ResponsePayLoad<T extends CustomObject> {
private String varX;
private List<T> value;
}
両方customObjectsための機能を解析するようになります:私はコードを書くとき、私のサービスロジックで
public ResponsePayLoad<customOne> parseResponse(String response){
CustomOne one = ; // parsingLogic
return one;
}
public ResponsePayLoad<customTwo> parseResponse(String response){
CustomTwo two = ; // parsingLogic
return two;
}
として:
ResponsePayLoad<CustomObject> responseObj = parseResponse(response);
I私がしたくないResponsePayLoadに型キャストする必要があります。
誰も私に「?」を使用してスキップする方法を教えてもらえますか?抽象的な機能で、まだ同じロジックを維持していますか?さらに、私は上記で定義したものと同じ型キャストをしたくありません。どんな助けもありがとう。