まず、Java の配列がタイプセーフではない話。 public class ExampleArray { public static void main(String[] args) { String[] strArray = {"test1", "test2"}; Object[] objArray = strArray; // 配列は共変なので代入可能 objArray[0] = new Integer(3); // java.lang.ArrayStoreException } } 上記のように、Java の配列は共変という性質を持っているので、Object[] に String[] を代入することができます。つまり、String[] は Object[] のサブクラスである、ということです。 しかし、Generics の場合は、この性質が当てはまりません(Generics は共変で