null 的类型是什么?

rwa*_*ace 0 null types kotlin

在 Kotlin 中,可以是 `Foo 或 null 的东西的类型是 Foo?。

但是 null 本身的类型是什么?特别是,它不是Any 或其任何子类型的元素。

fly*_*lyx 5

规范

关键字null表示空引用,它表示没有值,并且是仅对可空类型有效的值。空引用具有类型,kotlin.Nothing?并且根据定义,是该类型的唯一值。

这是相关的,例如这里:

fun foo() = null
Run Code Online (Sandbox Code Playgroud)

Kotlinfoo将从其主体中推断出 的返回类型,即表达式null。因此返回类型将为kotlin.Nothing?.

编辑:分配null给可为空类型的工作是因为

kotlin.Nothing 是 Kotlin 类型系统中任何其他类型的子类型

因此,对于 any Tkotlin.Nothing?可分配给T?因为kotlin.Nothing是 的子类型T