I know that it doesn't work and it shouldn't work. What I am interested in is the mechanisms used by compiler to resolve this problem. When you compile it, I assume that ? super Integer is changed to some kind of a class. If it does, how is it then compared to other Objects ? The bottom line: If ? super Integer is translated into some kind of object which is then called by the compiler capture of ? super Integer, how this object can be compared to lets say Object ?
Or maybe I am wrong and that's not the way compiler works here ? If not, what is the purpose of "capture of" mechanism and how is it used ?