From Effective Java by Joshua Bloch,
Cov
Generics are invariant: from JSL 4.10:
...Subtyping does not extend through generic types: T <: U does not imply that C <: C ...
C
and a few lines further, JLS also explains that Arrays are covariant (first bullet):
4.10.3 Subtyping among Array Types