Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 分配给null的对象的类型是什么_Scala - Fatal编程技术网

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]那样做,它会是真的吗?