Lol*_*ewn 0 java casting exception class classcastexception
我遇到了将类转换为彼此的问题.
要更详细地解释它,请看一下这张图片.

在我的代码中,我会SkillBase s = new SkillBase();在该类中设置一些值.然后我尝试做Subclass sub = (Subclass)s;但运行时它会产生ClassCastException.
我添加了一个小的调试部分,它检查它是否instanceof返回true.
我已经尝试了谷歌,在这里看到了一些问题,并阅读它们(没有一个有我的答案)
那么,我该怎么办?
SkillBase不是实例Subclass,为什么你认为铸造会起作用?试试这个:
SkillBase s = new Subclass();
Subclass sub = (Subclass)s;
Run Code Online (Sandbox Code Playgroud)
哪个会成功的.我也认为你不对instanceof,我确信:
s instanceof Subclass
Run Code Online (Sandbox Code Playgroud)
true在上面的代码中产生但false在你的情况下.
以现实世界的术语思考:你总是可以施展Dog,Animal因为每只狗都是动物*,但由于某些动物不是狗Animal,因此Dog可能会失败.
*实际上,编译器为你做了这个,它被称为多态