为什么我无法检查类型是否为Null
?
scala> val s:String = null
s: String = null
scala> s.isInstanceOf[Null]
<console>:13: error: type Null cannot be used in a type pattern or isInstanceOf test
s.isInstanceOf[Null]
^
答案 0 :(得分:3)
x.isInstanceOf[C]
的一般合同是,当且仅当true
是x
的实例时,才会返回C
。作为“任何事物的实例”意味着x
不是空的。
根据该规范,x.isInstanceOf[Null]
必须始终返回false
,因为x
不会是 Null
的实例,即使它发生了是null
。编译器通过拒绝编译该测试来保护您免受这种混淆。
测试x
是否为null
的惯用方法是简单地使用
x == null
答案 1 :(得分:1)
检查与null
的相等性的更正确方法,因为您希望查找引用相等明确性。
x eq null