【问题标题】:Primitive arrays as a generic parameter [duplicate]原始数组作为通用参数[重复]
【发布时间】:2016-03-11 20:11:37
【问题描述】:

我知道创建 List<int> 是不可能的,因为 int 是原始类型。但是,我想知道为什么我可以创建List<int[]>。基本上,我的问题是为什么可以在 Java 中使用 Collection<primitive_type_array>

【问题讨论】:

  • 你的意思是为什么你可以有 List?这是因为 int[] 不是原始类型,它是原始类型的数组。
  • 泛型对可以使用的内容强制执行某些规则 - 基本上,在您的情况下,不允许使用任何原语。数组不是原始数组,它是Object。即使它是原始的。
  • 我认为 OP 知道数组和原语之间的区别。他可能想了解更多关于泛型的信息。

标签: java


【解决方案1】:

根据Java Language Specification

在 Java 编程语言中,数组是对象(第 4.3.1 节),是动态创建的,并且可以分配给 Object 类型的变量(第 4.3.2 节)。 Object 类的所有方法都可以在数组上调用。

【讨论】:

    【解决方案2】:

    泛型可以容纳任何不是原始类型的东西。数组不是原始类型,因此允许使用 Collection<int[]>。见:https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html

    【讨论】:

      【解决方案3】:

      数组是一个对象。请注意如何调用它的标准 Object 方法?同样,您使用 new 关键字对其进行初始化。

      【讨论】:

        【解决方案4】:

        因为数组是对象,它本身包含对其他对象或原始类型的引用。 https://docs.oracle.com/javase/specs/jls/se7/html/jls-10.html

        【讨论】:

          猜你喜欢
          • 2022-01-11
          • 2016-05-18
          • 2016-02-17
          • 2016-02-23
          • 2023-03-28
          • 2016-09-18
          • 2014-04-18
          • 1970-01-01
          • 2011-05-25
          相关资源
          最近更新 更多