为什么kotlin放弃“新”关键字?

为什么kotlin放弃新的关键字? 这使得查看函数调用和对象分配之间的区别更加困难。

Kotlin编码公约明确规定:

  • 使用camelCase作为名字(并且避免使用名字下划线)
  • 类型以大写字母开头
  • 方法和属性以小写开头

如果您按照上面的说法, constructor视为可以调用的常规函数 ,即val invoice = Invoice()new关键字将变得多余 。 一旦你习惯了这个习惯,很清楚代码在做什么。

事实上,即使在Java代码中,也会有很多隐式分配,这些分配只会在像Collections.singleton(o)或Guava的Lists.newArrayList()这样的方法调用下面发生,所以我不认为你关于分配可见性的争论更好关键字是完全有效的。

(IMO)这样做是因为函数和对象构造之间没有真正的区别,即没有任何东西阻止函数分配一个对象(他们经常这样做)。

工厂功能就是一个很好的例子。 这些函数创建新的对象,但它们绝不是类的构造函数。

AFAIK, new关键字是由于对C \ C ++的负面经历而创建的,其中返回新对象的函数必须特别标记(按照名称约定),以免忘记(手动)释放内存。 在像Java \ Kotlin这样的自动内存管理语言中,这不是一个问题。

其他几种语言没有new关键字(Python,Scala,也许Ceylon),而那些已经改用这些语言的人似乎从来没有错过它。 我知道我不知道