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