为什么不能将类型检查为“Null”的实例

时间:2017-11-16 09:54:33

标签: scala

为什么我无法检查类型是否为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]

                 ^

2 个答案:

答案 0 :(得分:3)

x.isInstanceOf[C]的一般合同是,当且仅当truex的实例时,才会返回C。作为“任何事物的实例”意味着x不是空的。

根据该规范,x.isInstanceOf[Null]必须始终返回false,因为x不会是 Null的实例,即使它发生了是null。编译器通过拒绝编译该测试来保护您免受这种混淆。

测试x是否为null的惯用方法是简单地使用

x == null

答案 1 :(得分:1)

检查与null的相等性的更正确方法,因为您希望查找引用相等明确性。

x eq null