为什么Kotlin使用arrayOf之类的全局函数

时间:2019-03-09 00:55:55

标签: java kotlin

我是Kotlin的新手。我觉得这是一种奇怪的做法。

对于arrayOf / mutableListOf,本能是尝试使用构造函数new Array<T>(...args)尝试 construct 这些类型之一。甚至是静态工厂方法,例如LocalDateTime.of(...)

为什么不使用new Array<T>(),或者至少不使用范围函数,即Array.of。这些方法也不会使全局范围混乱吗?

2 个答案:

答案 0 :(得分:2)

arrayOfmutableListOf不在“全局范围”内(甚至根本不存在)。它们分别位于kotlinkotlin.collections软件包中。

碰巧,kotlin.*kotlin.collections.*是任何kotlin文件的默认导入,因此您不必自己进行该导入。参见Default Imports

这类似于Java,其中默认导入java.lang.*,而无需指定它。

此外,您不能“构造” arrayOf和mutableListOf,因为它们不是类型。它们是方法-它们以小写字母开头是事实,这是表明类型的标准方式-

Kotlin允许类级别以外的程序包级别的方法(尽管为JVM编译时,它们将位于类内部),但这与Java中的import static并没有太大区别,您可以使用该方法访问静态方法来自没有类名作为前缀的类。

答案 1 :(得分:0)

  1. 科特林不使用new关键字。
  2. 它清楚表明数组是否可变。
  3. 有些javascript和本机库会将调用映射到其他实现。