为什么不是Kotlin Collections中的isEmpty属性?

我开始学习Kotlin,只注意到Collections.isEmpty是一个函数,而不是一个属性。 但是, Collections.size是一个属性而不是函数。

在大多数(所有?)集合中,我期望这两者在语义上是相关的,而isEmpty的实现可以简单地为size === 0

那么…为什么不是一个属性? 这只是一个设计错误?

在决定java.util.Collection哪些方法是kotlin.collections.Collection的属性时, kotlin.collections.Collection考虑以下因素:

  • 根据Kotlin编码约定 , sizeisEmpty都可以被认定为属性,但是size是固有的, isEmpty只是size属性的派生。
  • 当实现一个集合时,可以用一个var属性来覆盖val的 size (可能是一个私有的setter),但isEmpty几乎不需要。
  • 将方法作为一个属性公开需要在派生类中生成额外的方法,更好地保持它们的数量尽可能小。

在java中你有list.isEmpty()方法列表 list.isEmpty() () 。 在list.isNotEmpty中有一个list.isNotEmpty属性会混淆人。

恕我直言,为什么Kotlin- isNotEmpty选择使isNotEmpty一个方法,而不是一个属性是java的一致性。