为什么不AnyVal在使用isInstanceOf检查?(Why can AnyVal not be

2019-09-18 04:53发布

我很纳闷,为什么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]

Answer 1:

AnyVal在运行时不存在了。 只有在编译时。 换句话说,它只是一个编译器的“绝招”考虑JVM元作为第一类对象。

然而, isInstanceOf方法是在运行时执行,所以它不能正常工作。 因此,编译器错误。



文章来源: Why can AnyVal not be used in an isInstanceOf check?
标签: scala