I stumble upon this problem million of times and I can't wrap my head around it.
Let's assume I have a stream seq
of type Stream<? extends T>
and I want to execute a forEach
on its elements.
The type of the consumer now becomes a Consumer<? super ? extends T>
, now how does java treat a generic type ? super ? extends T
?
Is it the equivalent of ? super T
, because the generic type ? extends T
is considered as a T
in this example.
Someone please provide the exact procedure of how the java compiler treats the following situations.