在 Kotlin 中,可以是 'Foo 或 null 的东西的类型是 Foo?。
但是空本身的类型是什么?特别是,它不是任何元素或其任何子类型。
从规范:
关键字
null
表示 null 引用,该引用表示缺少值,并且仅对可为 null 的类型是有效值。Null 引用的类型为kotlin.Nothing?
,根据定义,它是此类型的唯一值。
例如,这与此处相关:
fun foo() = null
Kotlin 将从其主体推断出foo
的返回类型,即表达式null
。因此,返回类型将为kotlin.Nothing?
。
编辑:将null
分配给可为空的类型有效,因为
kotlin.Nothing
是 Kotlin 类型系统中任何其他类型的子类型
因此,对于任何T
,kotlin.Nothing?
都可以分配给T?
,因为kotlin.Nothing
是T
的子类型。
null
它不是特定类型,而是为某些具有特定类型的变量定义值。
null
定义对无或空内存地址的引用。