Java 嵌套类型的通配符
我试图理解为什么这个方法的类型擦除不能使用通配符Java 嵌套类型的通配符,java,generics,types,wildcard,Java,Generics,Types,Wildcard,我试图理解为什么这个方法的类型擦除不能使用通配符 public boolean foo(TypeA<TypeB<?>, TypeB<?>> bar) { return true; } // instantiate an object TypeA<TypeB<TypeC>, TypeB<TypeC>> somethingOtherThanFooBar = ...; // TypeA<TypeB<?>
public boolean foo(TypeA<TypeB<?>, TypeB<?>> bar) {
return true;
}
// instantiate an object
TypeA<TypeB<TypeC>, TypeB<TypeC>> somethingOtherThanFooBar = ...;
// TypeA<TypeB<?>, TypeB<?>> cannot be applied to TypeA<TypeB<TypeC>, TypeB<TypeC>>
foo(somethingOtherThanFooBar);
public boolean foo(TypeA>bar){
返回true;
}
//实例化一个对象
键入除foobar=…]以外的其他内容。。。;
//TypeA>不能应用于TypeA
foo(foobar以外的东西);
我知道如果方法签名是
pulic boolean foo(TypeA bar)
,它会起作用,但这不适用于通配符,原因我不明白。规则是:a
is-aB
意味着G
is-aG
,因此
TypeA
is-aTypeA>