[英]java casting ClassCastException
我有以下课程:
public abstract class A implements C {
...
}
public abstract class B extends A {
method();
}
但是当我尝试执行以下操作时
A a = null;
A a = new A();
((B) a).method();
我收到 ClassCastException,有人有解决方案吗?
B 扩展 A,但 A 不扩展 B。
A 有 B 的所有东西,但 A 不能做 B 中声明的东西
的一个实例B
是实例A
,但实例A
不一定是B
。 类似于说“所有圆都是形状,但并非所有形状都是圆”。
你不能做你想做的事。 这就是为什么你会得到例外。
我认为您在这里想要的是一个构造函数来获取 A 对象并从中创建一个更大的 B 对象,该对象具有包含的方法(A 没有)。 但这并没有多大意义。 我一辈子都想不通你为什么要在实践中这样做,而不是一开始就构建 B 对象。
public abstract class A implements C {
...
}
public abstract class B extends A {
public B(A child){
//Construct a B out of A here
}
public void method();
}
然后
A a = null;
A a = new A();
new B(a).method();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.