class a122{
public static void main(String[] args){
Object d=4;
String g=(String)d;
}
}
為什麼運行時這個小程序會出錯,按說object不是可以轉化成String的嗎
你這種理解是錯誤的,因為你定義的Object類是Integer 類型,跟String類型沒有關系,不能轉換。
雖然可以編譯通過,但是會報運行時異常java.lang.Integer cannot be cast to java.lang.String的。
有繼承關系的子類和向上轉型為父類類型的。但是沒有繼承關系的類之間肯定是無法轉換的,很簡單,沒有連接紐帶啊。就是指鹿為馬的事情,本質上不成立。下面是合理的:
Integer t = 4;
Object o = (Object)t;//這樣Object是Integer的父類,那麼子類強制轉換為父類類型是正確的。