The proper term is capture of wildcard. Compiler internally converts the wildcard instantiation of a generic type to the capture of the wildcard. The capture represents the particular unknown type of the type argument. This particular unknown type is, of course, a member of the type family that the wildcard denotes.
Note that, since there can be many different types that can be represented by wildcard instantiation, we say that wildcards represent a family of different instantiation of a parameterized types.
Can i define implicit type manually?
Anonymous type variable? No. That is created by compiler internally. You can say that, you are instructing the compiler to create an anonymous type argument which will replace the wildcards used.
Is it true that all of implicit type is the same?
No. If you use say List<? extends Number>
twice as different types, they both will generate different anonymous types, viz, CAP#1 extends Number
and CAP#2 extends Number
.
What's the implicit type for compiler?
I don't understand these questions.
Is it true that compiler does know that only null
is instance of this implicit type?
The reason why adding null
works is due to the fact that, null
is a valid value for any kind of reference. So, whatever the actual type argument the wildcard represent, would happily accept the value null
.