我想澄清這一點,所以我完全理解類型鑄造。請糾正任何不正確的事情,因爲我現在以非常緩慢的速度自學了大約2個月的Java。在Java中的類型鑄造/鑄造
比方說,我創建了一個名爲SubObject的類。我知道所有沒有直接顯式超類的類都被假定爲Object類的子類。
Object obj1 = new SubObject();
SubObject subObj1 = (SubObject) obj1;
System.out.println(subObj1); //prints out com.examplePackage.SubObject1234e1234;
因此,我已經成功地將基類(Object)的引用降級到其派生類(subObject)。然而...
Object obj2 = new Object();
SubObject subObj2 = (SubObject) obj2;//this throws the ClassCastException error.
我ClassCastException異常錯誤的理解是,它繼承的RuntimeException在編譯時抓住它,就表明該代碼試圖將對象強制轉換的子類時它不是一個實例。因爲subObj2不是SubObject的實例,而是Object,所以它不兼容。
所以我有兩個問題: 1.我的理解中是否有任何缺陷/錯誤? 2.在哪種情況下實際使用了向下轉換?感謝大家的幫助。