(1) In java, you can assign any subtype to its supertype variable place holder. (For Example : Object o = new String();)
(2) So, in the below lines of code,
(a) Queue<? super Number> q1 // It can be a Number or an Object
(b) Queue<? extends Integer> q2 // It can be a Integer or anything below the Integer hierarchy. ***** Integer is a subclass of Number*****.
So, I assume that since Number is a parent class of Integer, the Number class can hold its child class (Integer) or anything below the hierarchy.