【发布时间】:2014-03-07 02:29:30
【问题描述】:
我有一个愚蠢的 Java 问题,这是一个场景
Class A {}
Class AA extends A{}
AA aa = new AA()
A a = new A()
当我这样做时
aa = (AA) a;
我在线程“main”java.lang.ClassCastException 中遇到了一些错误,例如 Exception: A cannot be cast to AA
问题出在哪里?
【问题讨论】:
-
可能是错字?你的意思是说
A a = new AA();? -
a 肯定是 A,但可能或不可能是 AA。我假设您的意思是 A a = new A()
-
AA 是 A 。我相信它应该可以工作,它被称为显式转换。例如,r = (Rose) f; r 是 Rose 对象, f 是 Flower 对象。玫瑰延伸花,玫瑰(AA)是一朵花(A)。所以我真的不知道出了什么问题......
-
是的,你得到了正确的错误!
-
就像你说的“AA 是 A”。但是,您的代码
(AA) a正在尝试将 A 转换为 AA。如果(A) aa