メソッドをオーバーライドして、取得するパラメーターをそのパラメーターのサブクラスに置き換えたいと思います。
リターンタイプの場合、メソッドシグネチャの一部ではなく、サブクラス(「共変リターンタイプ」と呼ばれる)に置き換えることができるため、問題はありません。引数の場合、署名の一部であるため、これは機能しません。
そこで、同じタイプのジェネリックパラメーターを使用するソリューションを考え出しました。
public abstract class A<T extends A> {
public void loadValuesFrom(T source) {
...
}
}
public class B extends A<B> {
public void loadValuesFrom(B source) {
super.loadValuesFrom(source);
...
}
}
しかし、「パブリック抽象クラスA」というステートメントは私には奇妙に見えます。これを達成する他の方法はありますか?「共変パラメータタイプ」はありますか?:-)