从the API doc我发现Null
是一个特征,但它的唯一实例是null
。
abstract final class Null extends AnyRef
Null - 与scala.Nothing一起 - 位于Scala类型层次结构的底部。
Null 是所有引用类型的子类型;它唯一的例子是 null 引用。由于 Null 不是值类型的子类型,因此null不是任何此类型的成员。例如,无法将 null 分配给scala.Int类型的变量。
如何实例化特征?任何实现这个概念的简单例子都会有所帮助。
答案 0 :(得分:2)
您无法实例化类Null
的实例,因为它是抽象的和最终的。 Null
是类似Nothing
的编译器的图形,用作所有引用类型的底部类型。也就是说,Null
是继承自AnyRef
的任何其他类型的子类型。它唯一的值是null引用,但是没有办法实例化Null
类并且神奇地得到一个空引用。它与Nothing
的不同之处在于 居住在一个值null
。
因此,如果您将null
分配给标识符,那么如果您不提示,则会将Null
推断为其类型。
scala> val a = null
a: Null = null