次のクラスがあります。
public class Base {
public int someMethod(){...}
}
public class Derrived extends Base {
@Override
public int someMethod(){...}
}
また、私はList<Base>
List<Base> method() {
return fetch();
}
メソッドfetch()
は戻りますList<? extends Base>
が、実際には Derived クラスのインスタンスのリストを保持しています
List<? extends Base> fetch() {}
ただし、メソッドを定義するコードmethod()
はコンパイルされません。へのキャストが必要List<Base>
です。そのコレクションのインスタンスを常に Base クラスのインスタンスとして扱うことができるのに、なぜキャストする必要があるのでしょうか?