【问题标题】:Why not import a package to declare arrays in java为什么不导入包以在 java 中声明数组
【发布时间】:2018-04-08 06:57:44
【问题描述】:

为什么我们不需要导入任何包来在java中声明和使用数组?既然 java.lang 中不存在 Array 类,那么我们为什么不显式导入 java.lang.reflect.Array 呢?还是默认情况下也存在?

【问题讨论】:

  • 数组类型与Arrays 没有直接关系。它们只是由语言语法提供的。你没有来导入任何东西,它只是写foo.bar.baz.Quux quux;的捷径。
  • 我读到 Array 和 Arrays 是两个不同的类。 Array 调用静态方法来创建和使用数组对象。而 Arrays 类用于操作数组对象。但是我们为什么不导入 Array 类呢
  • 你也不需要导入任何东西来使用intdouble等。它们只是语言的一部分,而不是 API,因此不需要导入。
  • int double 是原始类型,而 Array 不是原始类型,就像 String 是引用类型并且存在于默认导入的 java.lang 中,因此我们不会显式导入它。但 Array 并非如此
  • ArrayArrays 是两个独立的类,但它们只是恰好被命名“数组”的类,它们与数组的概念一起使用。实际数组类型为int[].classURL[].class 等。

标签: java arrays import


【解决方案1】:

数组是核心语言的一部分。您不需要导入它们,原因与不需要导入 intfloat 的原因相同。

java.lang.reflect.Array 包不是数组的包,它是别的东西 - 与数组相关的reflection 工具包。

【讨论】:

  • Java 文档说 java.lang.reflect.Array 包含用于创建和访问数组对象的静态方法
  • String 也是 java.Lang 的一部分,所以默认会被导入 int 是原始数据类型,所以它是核心语言的一部分
  • 没错。但这是为了动态创建仅在运行时才知道的类型数组。这就是为什么那里的方法采用Class<?> 参数的原因。它用于相当高级的用法。如果您对此感兴趣,请阅读 java 反射。
  • String 是对的,这对我来说是个坏例子。
  • 那么这是否意味着 String 和 Array 不能以类似的方式工作?就像声明 String 需要一个包而声明一个数组不需要一样?对不起,我还是有点困惑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
  • 2011-07-14
  • 2013-01-17
  • 2015-08-04
  • 2014-02-17
相关资源
最近更新 更多