閱讀546 返回首頁    go 微軟 go windows


Java Object類型與值類型之間的相互轉化

public static void main(String[] args) {
    boolean var = true;
    foo((Object)var);
}

public static void foo(Object value) {
    boolean var = (boolean)value;
    System.out.println(var);
}

如上方代碼所示,函數foo會傳遞一個Object類型的變量value過來(傳遞進來的值確實是布爾值,不要問我為什麼不直接在foo函數中將Object改為boolean,程序確實必須寫Object,並且這個問題不在今天的討論範圍),然後同事在函數中將其強製轉換為boolean類型,在eclipse中運行一段時間也確實沒什麼問題,可今天打包之後發現程序運行到這一行的時候拋了異常,Object cannot be cast to boolean.

我突然意識到,Object類型的value是一個對象,而boolean是值類型,於是我把boolean換成其對應的包裝器類型Boolean,問題完美解決。

雖然問題是解決了,但是還是不明白為什麼在eclipse中測試的時候這段代碼能夠運行而打包以後就不能運行了?(項目上使用的是Java7,我自己在個人電腦上使用了Java8也沒問題)

最後更新:2017-06-27 23:32:01

  上一篇:go  12313
  下一篇:go  Java異常