Java不支持从原始类型创建集合,因此以下构造会产生编译错误(“参数不能为原始类型):

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


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

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


这背后的逻辑是什么?



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

最佳答案

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

根据specification

Type:
    PrimitiveType
    ReferenceType



  如果一个类声明一个或多个类型变量(第4.4节),则它是通用的。





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





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

关于java - 为什么可以创建基元数组的集合但不能创建基元的集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40170853/

10-10 17:18