看了许多资料,对于java不能创建泛型数组的原因基本都是:
1.泛型的类型擦除
2.数组的协变
这两个理由个人感觉不是充分的,比如下面这个赋值:
编译器是可以处理成 List[] list = new List[]的,
但是这样隐形处理以后,违背了使用 List<String> 泛型的初衷,
使用List<String> 是为了编写代码的类型安全,但是如果按上面隐形处理的话就可以:
list[0].add(5)
所以第三个理由是:
可能违背使用泛型的初衷,导致类型的不安全。
看了许多资料,对于java不能创建泛型数组的原因基本都是:
1.泛型的类型擦除
2.数组的协变
这两个理由个人感觉不是充分的,比如下面这个赋值:
编译器是可以处理成 List[] list = new List[]的,
但是这样隐形处理以后,违背了使用 List<String> 泛型的初衷,
使用List<String> 是为了编写代码的类型安全,但是如果按上面隐形处理的话就可以:
list[0].add(5)
所以第三个理由是:
可能违背使用泛型的初衷,导致类型的不安全。