java - Java 中的类转换异常

标签 java class exception casting classcastexception

我在相互转换类时遇到问题。

要更详细地解释它,请查看此图片。

The Image

在我的代码中,我执行SkillBase s = new SkillBase();,然后在该类中设置一些值。 然后我尝试执行 Subclass sub = (Subclass)s; 但运行时它给出了 ClassCastException。

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

我尝试过谷歌,也在这里看到了一些问题并阅读了它们(他们都没有适合我的答案)

那么,我该怎么办?

最佳答案

SkillBase 不是 Subclass 的实例,那么您为什么认为强制转换会起作用呢?试试这个:

SkillBase s = new Subclass();
Subclass sub = (Subclass)s;

这将会成功。另外,我认为您对 instanceof 的看法是不正确的,我确信:

s instanceof Subclass

在上面的代码中产生true,但在您的情况下产生false

从现实世界的角度思考:您始终可以将 Dog 转换为 Animal,因为每只狗都是动物*,但转换 AnimalDog 可能会失败,因为有些动物不是狗。

* 事实上,编译器会为你做到这一点,这就是所谓的多态性

关于java - Java 中的类转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9038519/

相关文章:

java - 如何知道 HttpServletResponse 重定向到哪里?

php - 未找到“Michelf\Markdown”类

Java多个Class和多个main方法,执行所有main方法

c++ - 覆盖方法错误 C++

javascript/jquery 错误 "invalid object initializer"

java - Java 中的 Gson : Attemped to deserialize a java. lang.Class。忘记注册类型适配器

java - Spring MVC。关于愿景解决方案/设计问题的问题

java - 如何将通用类型的类对象转换为该类型的特定实例

class - Core Data NSPredicate 按实体类过滤?

java - 异常消息可以包含Java中的正则表达式字符吗?