簡體   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