import java.lang.reflect.Array;
import java.util.Arrays;public class ArrayMaker<T> {
    private Class<T> kind;    public ArrayMaker(Class<T> kind) {
       this.kind = kind;
 } @SuppressWarnings("unckecked")
   T[] create(int size) {
       return (T[]) Array.newInstance(kind, size);
 }  public static void main(String[] args) {
      ArrayMaker<String> stringMaker = new ArrayMaker<String>(String.class);
      String[] stringArray = stringMaker.create(10);
      System.out.println(Arrays.toString(stringArray));
 }
}
ouput:[null, null, null, null, null, null, null, null, null, null]为什么输出全是NULL?我知道是因为擦除,但是不明其中细节。。

解决方案 »

  1.   

    不是Null是什么?你有没给它们赋值。这跟擦除一点关系都没有。
      

  2.   

    和擦除没有关系吧。
    你创建了一个String数组,但数组中的元素没有赋值,输出当然是null
      

  3.   

    这不是泛型的问题。
    你创建了数组,但是没有创建数组中的对象。
    就像
    String[] strs = new String[10];
    一样的原因。