Assuming we have this hierarchy of classes.
Object
<-- Class A
<-- Class B
<-- Class C
If I have
List<? super B> myList = new ArrayList<>();
Why can I only add objects to "myList" which are Instance of class B or the subclass C? That doesn't make any sense to me. I thought if I use "? super B" in my wildcard (or the same with generics) I can only put in objects which are B or super classes of B. I'm absolutely confused and I hope someone can help me to understand this stuff.