如何在Scala,trait" Null"可以实例化生成" null"?

时间:2017-01-03 04:51:34

标签: scala functional-programming

the API doc我发现Null是一个特征,但它的唯一实例是null

abstract final class Null extends AnyRef
     

Null - 与scala.Nothing一起 - 位于Scala类型层次结构的底部。

     

Null 是所有引用类型的子类型;它唯一的例子是 null 引用。由于 Null 不是值类型的子类型,因此null不是任何此类型的成员。例如,无法将 null 分配给scala.Int类型的变量。

如何实例化特征?任何实现这个概念的简单例子都会有所帮助。

1 个答案:

答案 0 :(得分:2)

您无法实例化类Null的实例,因为它是抽象的和最终的。 Null是类似Nothing的编译器的图形,用作所有引用类型的底部类型。也就是说,Null是继承自AnyRef的任何其他类型的子类型。它唯一的值是null引用,但是没有办法实例化Null类并且神奇地得到一个空引用。它与Nothing的不同之处在于 居住在一个值null

因此,如果您将null分配给标识符,那么如果您不提示,则会将Null推断为其类型。

scala> val a = null
a: Null = null