以下のコードがコンパイルに失敗するのはなぜですか? 同等のエラーを示すために、この例を (より少ないクラスに) 簡略化できますか?
生成されるエラー メッセージは次のとおりです。
func(capture of ? extends A) in ... は B に適用できません
private static interface A {}
private static class B implements A {}
private static class C<T> {
private final T t;
private C(T t) {
this.t = t;
}
private void func(T t) {}
}
@Test
public void doTest() {
B b = new B();
C<? extends A> c = new C<B>(b);
c.func(b); // fails here
}