Java中的类强制转换异常

Lol*_*ewn 0 java casting exception class classcastexception

我遇到了将类转换为彼此的问题.

要更详细地解释它,请看一下这张图片.

图片

在我的代码中,我会SkillBase s = new SkillBase();在该类中设置一些值.然后我尝试做Subclass sub = (Subclass)s;但运行时它会产生ClassCastException.

我添加了一个小的调试部分,它检查它是否instanceof返回true.

我已经尝试了谷歌,在这里看到了一些问题,并阅读它们(没有一个有我的答案)

那么,我该怎么办?

Tom*_*icz 5

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可能会失败.

*实际上,编译器为你做了这个,它被称为多态