我目前正在輔導一位AP Java高中生,她問我一個關於「雙鑄」的問題。我以前從未聽說過這個詞,但顯然她的老師希望她在即將到來的決賽中瞭解它。「雙鑄」
她的老師提供的例子是,如果你想投的整數爲一個字符串,你就必須做到以下幾點不得到一個編譯錯誤:
Integer i = new Integer(5);
String s = (String)(Object) i;
的問題是:當你想在現實生活中做到這一點?
老師只提供導致運行時錯誤的例子。另外,我從來不知道這是一個術語,但是這樣做似乎不是個好主意,因爲只有兩種類型不兼容時纔會出現錯誤。
謝謝!
該代碼肯定會導致'ClassCastException',而'Integer'可以 「向上轉型」 爲'Object',該對象仍然知道它是一個「整數」...第二次投射將失敗。她的老師吸菸是什麼? :p – fge
@fge是啊..我想不出任何當她今天問我這個問題時有意義的例子,所以我告訴她我會回到她的身邊..很高興知道這只是一個壞主意,而我我並不瘋狂。 =] –
沒有理由爲什麼你會寫這樣的代碼。如果您知道投射後需要的最終對象類型,那就是您要將對象投入的東西。你確定老師不是指(String)((Object)i).doSomething())嗎? – aishwarya