par*_*rsa 1 casting scala classcastexception downcast
从非Java背景到Scala给我带来了很多困难,包括这个.
scala> class A
defined class A
scala> class B extends A
defined class B
scala> val a = new A
a: A = A@2e893a4a
scala> val b = new B
b: B = B@3a47c130
scala> a.asInstanceOf[B]
java.lang.ClassCastException: A cannot be cast to B
...
scala> b.asInstanceOf[A]
res1: A = B@3a47c130
Run Code Online (Sandbox Code Playgroud)
我知道ClassCastException被抛出,因为在运行时,a它看起来不像B,但实际上它是(据我所知).这里发生了什么?任何解决方法?谢谢.
编辑:JVM如何理解a无法转换为B?它a.getClass和之间进行了一些浅薄的比较B吗?
PS.我正在尝试将一个私有变量添加到库类中,并覆盖其中一个接受在库中定义的类作为参数的类方法(我正在尝试将该字段添加到的类).