我很纳闷,为什么AnyVal不能在isInstanceOf被用来检查? 什么是这种行为背后的原因是什么?
scala> val c = 't'
c: Char = t
scala> c.isInstanceOf[AnyVal]
<console>:12: error: type AnyVal cannot be used in a type pattern or isInstanceO
f test
c.isInstanceOf[AnyVal]
我很纳闷,为什么AnyVal不能在isInstanceOf被用来检查? 什么是这种行为背后的原因是什么?
scala> val c = 't'
c: Char = t
scala> c.isInstanceOf[AnyVal]
<console>:12: error: type AnyVal cannot be used in a type pattern or isInstanceO
f test
c.isInstanceOf[AnyVal]
AnyVal
在运行时不存在了。 只有在编译时。 换句话说,它只是一个编译器的“绝招”考虑JVM元作为第一类对象。
然而, isInstanceOf
方法是在运行时执行,所以它不能正常工作。 因此,编译器错误。