Kotlin 中“一切皆对象”是什么意思?

Kir*_*ttu 0 object kotlin

Kotlin 中“一切皆对象”是什么意思?

\n
\n

在 Kotlin 中,一切都是对象,因为您可以调用任何变量的成员函数和属性。某些类型可以有特殊的内部表示 \xe2\x80\x93 例如,数字、字符和布尔值可以在运行时表示为原始值 \xe2\x80\x93 但对于用户来说它们看起来像普通类

\n
\n

Sil*_*olo 7

对 Java 最常见的批评之一是某些类型(原始类型)受到特殊对待。也就是说, Javaint和Java 之间存在根本区别Stringint是原始类型并且String是对象类型。这会产生几个下游后果。

  • int始终按值传递,而按String引用传递。
  • int不能用于泛型。
  • int是不可为 null 的,而String可以是null.
  • 您无法调用 上的方法int
  • int不派生自Object,因此即使是其他“通用”的东西也toString无法在其上工作。

因此,Java 程序员必须始终意识到这一点,并且必须在某种意义上以不同的方式对待这些基本类型。

Kotlin 消除了这种差异。在 Kotlin 中,Int是一个类类型,就像String. 它有方法,通过引用传递,可以为空(Int?在 Kotlin 中定义良好),并且派生自顶级类型Any

在内部, Kotlin 可以自由地将其优化为原语int,以使您的代码更快。但至关重要的是,这是一个实施细节。作为程序员,您可以自由地假设一切都是对象,Kotlin 将与您一起工作。