das gibt keinen Typfehler:
class C { } class E extends C { void m () { } } E [] x = { new E (), new E () }; C [] y = x; y [0] = new C (); x [0].m();