繁体   English   中英

java铸造ClassCastException

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM