Typeのクラスを返すメソッドを定義すると、Baseを拡張するすべての型でメソッドをオーバーライドできないはずですか?安全でない型キャスト警告を与えるコレクションを返す汎用メソッド
MultiEntryModel.java(親クラス)
protected abstract <T extends Model> List<T> getDataList();
ProgramData.java
public class ProgramData extends MultiEntryModel {
...
@Override
protected List<Program> getDataList() {
return programs;
}
}
Program.java
public class Program extends Model {
...
}
私は危険なタイプを取得しています:以下の例を見てみましょうPrograms.javaで警告をキャストしますが、Modを拡張するProgram型のオブジェクトを含むListを返していますこれは、基底クラス<T extends Model>
のメソッドシグネチャで示されているとおりです。どうして?
ポスト正確かつ完全なエラーメッセージとともに、問題を再現する完全な最小限の例。投稿したコードにはキャストは一切ありません。 –
キャスティングがありません。この警告は、メソッドがオーバーライドされている時点でPrograms.javaに表示されます。 – user1452030