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