我有一个这样的类结构:
Interface A extends X
Class A_Impl implements A
Interface B extends A
Class B_Impl extends A_Impl implements B
我的网络服务客户端返回 A 的对象,我需要来自 B 的一些参数。所以我这样做:
A myA = (A) webservice.getA();
B myB = (B) myA;
但这总是抛出 ClassCast 异常:
java.lang.ClassCastException: A_Impl cannot be cast to B
我在这里做错了什么吗?如何从 B 类获取一些参数。
最佳答案
如果您有对未实现 B
的对象的引用,则无法将其转换为 B
。句号。
想象一下这是否可能。那么这会打印什么呢?
interface A {
int getNumberOfLives();
}
interface B extends A {
boolean isOrange();
}
class A_Impl implements A {
int getNumberOfLives() {return 9;}
}
public class Main {
public static void main(String[] args) {
A a = getA();
B b = (B)a;
System.out.println(b.isOrange() ? "Is orange" : "Is not orange");
}
static A getA() {return new A_Impl();}
}
关于java - 继承类的 ClasscastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28520916/