为什么可以创建基元数组的集合而不是基元集合

时间:2016-10-21 07:33:13

标签: java

Java不支持使用基元创建集合,因此后续构造会出现编译错误("参数不能是基本类型):

 List<int> ints = new ArrayList<int>(); 

另一方面,允许创建数组或基元的集合,因此以下构造是可以的:

List<int[]> ints = new ArrayList<int[]>();

这背后的逻辑是什么?

编辑:问题实际上是关于基元的数组,而不是基元,所以请不要解释我为什么不能将基元存储在集合中,而是为什么我可以在里面编排基元的数组一个集合?

1 个答案:

答案 0 :(得分:5)

收藏品是通用的:Collection<T>T必须是引用类型。基元不是引用类型。另一方面,基元数组是引用类型,因此您可以将其放入Collection。请记住,每个原语都有它的包装类,可以作为类型传递给泛型类型。

根据specification

Type:
    PrimitiveType
    ReferenceType
  

如果一个类声明了一个或多个类型变量(§4.4),那么它就是通用的。

  

4.3.1。对象   对象是类实例或数组。

  

4.4。类型变量   类型变量是一个非限定标识符,用作类,接口,方法和构造函数体中的类型。