Scala 分配给null的对象的类型是什么
在下面的代码中,Scala 分配给null的对象的类型是什么,scala,Scala,在下面的代码中,s scala> val s:String = null s: String = null //cannot check if instance is of type Null scala> s.isInstanceOf[Null] <console>:13: error: type Null cannot be used in a type pattern or isInstanceOf test s.isInstanceOf[Null]
s
scala> val s:String = null
s: String = null
//cannot check if instance is of type Null
scala> s.isInstanceOf[Null]
<console>:13: error: type Null cannot be used in a type pattern or isInstanceOf test
s.isInstanceOf[Null]
^
//s is no longer a String or Any or AnyRef
scala> s.isInstanceOf[String]
res2: Boolean = false
scala> s.isInstanceOf[AnyRef]
res4: Boolean = false
scala> s.isInstanceOf[Any]
res5: Boolean = false
scala> s.isInstanceOf[Object]
res11: Boolean = false
scala>val s:String=null
s:String=null
//无法检查实例是否为Null类型
scala>s.isInstanceOf[Null]
:13:错误:类型Null不能用于类型模式或isInstanceOf测试
s、 isInstanceOf[Null]
^
//s不再是字符串或Any或AnyRef
scala>s.isInstanceOf[字符串]
res2:Boolean=false
scala>s.isInstanceOf[AnyRef]
res4:Boolean=false
scala>s.isInstanceOf[任何]
res5:Boolean=false
scala>s.isInstanceOf[对象]
res11:Boolean=false
好吧,空值只是空值,它不会作为对象,如果对象是所有类的父对象,那么如果空值是一个对象,那么代码应该返回true
val s:String=null;println(s.isInstanceOf[Object])
但实际上它返回false,因此null只是null,它不会有任何类型:D请参见快照“null只是null,它不会有任何类型”——这不是真的。
null
的类型是scala.null
scala.Null
是引用类型的底部类型,因此它是scala.AnyRef
(包括scala.AnyRef
)本身的每个子类型的子类型。因此,“null
将不具有任何类型”的语句是错误的。事实上,null
不仅有任何类型,而且有所有类型(或至少所有引用类型)。那么,如果我们像isInstanceof[scala.null]那样做,它会是真的吗?