Java強制類型轉換

在Java中由於繼承和向上轉型,子類可以非常自然地轉換成父類,但是父類轉換成子類則需要強制轉換。因爲子類擁有比父類更多的屬性、更強的功能,所以父類轉換爲子類需要強制。

Object x = new Integer(0);
Number y = (Number)x;   //正確

父類引用x指向子類對象,多態。
x在內存中的本質還是Integer類型,所以可以強轉。

Integer x = new Integer(0);
String y = (String)x;   //編譯時報錯,不兼容的類型
Object x = new Object();
Number y = (Number)x;   //運行時拋出ClassCastException異常

編譯器在編譯時只會檢查類型之間是否存在繼承關係,有則通過;而在運行時就會檢查它的真實類型,是則通過,否則拋出ClassCastException異常。

發佈了26 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章