次のコードが警告を生成する理由がわかりません。
interface Generic<T> {
}
interface A {
}
class B {
Generic<A> c;
<T extends A> B(Generic<T> a) {
c = (Generic<A>) a; //warning here
}
}
//Unchecked cast from Generic<T> to Generic<A>
クラスBでは、タイプAのGenericのインスタンスの使用にのみ関心があります。この警告は、Generic引数をAではなくTとして格納する必要があることを示しています。
しかし、これは、Bジェネリックも宣言する必要があることを意味します。これにより、必要以上に複雑になるようです。