7 回答

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
upDownFather這個(gè)對(duì)象本身就不是UpDown類型的,改成下面這樣就行了
UpDownFather upDownFather = new UpDown();
UpDown upDown = (UpDown) upDownFather;
System.out.println(upDown.hashCode());
強(qiáng)制類型轉(zhuǎn)換的時(shí)候,目標(biāo)類型必須是該對(duì)象的真實(shí)類型或者父類才可以,
這里UpDown類型不是upDownFather對(duì)象的真實(shí)類型,也不是upDownFather的父類類型,所以會(huì)失敗。

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
子類能轉(zhuǎn)換成父類,無需強(qiáng)制轉(zhuǎn)換。
父類無法轉(zhuǎn)換成子類,即便加上強(qiáng)制轉(zhuǎn)換,運(yùn)行時(shí)還是會(huì)拋出類匹配錯(cuò)誤。

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
class A{
}
class B{
}
class Main{
static Object a = new A();
static B b = (B)a;
public static void main(String[] args) {
System.out.println(b.hashCode());
}
}
樓主這種方式編譯也不會(huì)有問題。
添加回答
舉報(bào)