いくつかのSuperClass
私は抽象的なジェネリックメソッドを持っています:
protected abstract <T extends Foo> T getFoo();
私の中で私はそれを次のSubClass
ようにオーバーライドしようとします:
@Override
protected SubFoo getFoo() {
return new SubFoo();
}
どこpublic class SubFoo extends Foo
私のサブクラスでgetFoo
は、次のエラーが発生します。
「型安全性:型SubClassからのgetFoo()の戻り型SubFooは、型SuperClassからのTに準拠するために、チェックされていない変換が必要です。」
私の質問は次のとおりです。
1)これが安全でないシナリオはありますか?
2)そうでない場合、コンパイラはそれを理解できるべきではありませんか?コンパイラがコンパイル時にSubFooがFooのサブクラスであることを理解するのを妨げているのは何ですか?
3)このようなことを達成する方法はありますが、警告はありませんか?