Consider this case:
class A {}
class B<T extends A, E extends T> {
B<?, A> b;
B<?, ? extends A> b2;
}
As I understand type bounds, in this case effective upper bounds of both T
and E
is class A
. So the question: why javac doesn't accept class A as argument in declaration of field b
, but accepts wildcard
? extends A
in declaration of field b2
?