Actually what you can't do is to declare :
List <Number> numList = new ArrayList <Integer>
but you are allowed to hold Integer values in <Number> List.
See Chapter 7 of
SCJP 6 Study Guide Book. Page 613 says:
"(...) So here, we're using
polymorphism not for the object that the array
reference points to, but rather what the array can actually HOLD - in this case, any
subtype of Animal. You can do the same thing with generics:
So this part works with both arrays and generics collections - we can add an
instance of a subtype into an array or collection declared with supertype.
(...)
"
Hope this helps,
Paul