# Generics vs. Array ```java // Java不能创建泛型数组,以下代码编译报错 Som [] soms = new Som[8]; ``` ***为什么数组不支持泛型?*** 数组支持协变特性,放宽了编译时的类型检查。 数组在创建的时候必须知道内部元素的类型,而且一直都会记得这个类型信息,每次往数组里添加元素,都会做类型检查。 Java 泛型是用擦除(Erasure)实现的,运行时类型参数会被擦掉。 所以对于泛型数组,编译器看不到泛型的 String 类型参数,数组由于无法确定所持有元素的类型,所以不允许初始化。