2017-02-21 34 views
-3

當我執行下面的代碼時,爲什麼會出現ClassCastException?我得到一個ClassCastException,但我的源類型對象是超類型,並且演員操作符是子類型

class Test extends Test3 { 
    public static void main(String[] args) { 
     Test3 t3 = new Test3(); 
     Test t = (Test) t3; 
     System.out.print("hello"); 
    } 
} 
+2

因爲'Test3'不是'Test':'Test'是'Test3'。 「哺乳動物」不是「狗」,而是「狗」是「哺乳動物」。 –

+0

這正是你無法做到的。你不能將對象投射到它不是的東西上。 – SLaks

回答

0

鑄造完成這種方式與原始數據類型。但如果你如String嘗試這是一個[類]你不能做,沒有像int Stringvariable = Integer.parseInt(Stringvariable)方法從字符串轉換爲整數或String intvariable = String.valueof(intvariable)轉換從Integer到String。

parseInt(Stringvariable)是Integer類中的一個方法。 valueof(intvariable)是String類中的一個方法。如果你想建立任何鑄造關係,可以通過方法來完成。