次のコードの何が問題になっているのか、具体的には、なぜがと<A extends ClassA>
同等ではないのか理解できません<? extends ClassA>
。
bar()
電話できないのfoo()
?
コンパイラは、メソッドfoo(...)は引数(...)には適用できない
と言います(
正確なエラーは以下のコメントで指定されています)
static class ClassA {};
static class ClassB<A extends ClassA> {};
private static <A extends ClassA> Collection<ClassB<A>> foo(Collection<ClassB<A>> as) {
return as;
}
private Collection<ClassB<? extends ClassA>> bar(Collection<ClassB<? extends ClassA>> as) {
// Error:
// The method foo(Collection<ClassB<A>>) is not applicable
// for the arguments (Collection<ClassB<? extends ClassA>>)
return foo(as);
}
ありがとう!