インターフェイスの関数の引数タイプとして、リクエストの基本実装を作成しようとしています。
次に、さまざまなクラスに基本リクエストクラスを拡張させて、リクエストオブジェクトにより具体的な意味を与えます。
ただし、Javaは引数として正確なクラスを必要とし、その基本クラスによって拡張されたクラスを尊重しません。
public interface MyInterface{
public String getValue(BaseRequest req);
}
public class MyInterfaceImpl implements MyInterface{
public String getValue(SpecificRequest req){ //Java will give a compile error here.
//Impl
}
}
public interface BaseRequest{
int requiredA;
int requiredB;
//setter and getters for A and B
}
public class SpecificRequest extends BaseRequest{
int specificValC;
//setter and getters for C
}
このパターンを達成するための最良の方法は何ですか?それとも私は少しデザインしすぎていますか?