为什么我不能在Kotlin中将可空类型分配给Any?

Rux*_*uxo 1 null types kotlin

任何人都可以解释为什么在Kotlin这样做是不可能的?

val x :Int? = 123
val y :Any = x
Run Code Online (Sandbox Code Playgroud)

我来自.NET背景,其中Nullable类型可分配给Object类型,但它们有何不同?

Jof*_*rey 6

可空类型不是子类型Any,但它们子类型Any?.

Any只是一个非可空类型的超类.这使得编写需要任何东西的非null实例的代码成为可能,并且仍然可以从类型检查器的安全性中受益(与使用Java时不同Object).

这是一个可以帮助的图像:

在此输入图像描述

以下代码是您的有效替代品:

val x: Int? = 123
val y: Any? = x
Run Code Online (Sandbox Code Playgroud)