[英]Java automatic unboxing - is there a compiler warning?
我是Java中自動裝箱的忠實粉絲,因為它節省了許多丑陋的鍋爐板代碼。 但是我發現自動拆箱在某些可能為null的情況下會引起混淆。 有沒有辦法檢測代碼庫中帶有javac警告的自動拆箱位置? 任何其他解決方案來檢測僅出現拆箱(例如FindBugs或特定於Eclipse的編譯器警告)將不勝感激,因為我找不到任何解決方案。
為了澄清我不希望在拳擊上生成任何警告 - 僅取消裝箱。
下面是一些可能導致混淆NullPointerExceptions的代碼的簡單示例:
class Test {
private Integer value;
public int getValue() {
return value;
}
}
對。 在Eclipse中:
首選項 - > Java->編譯器 - >錯誤/警告 - >潛在的編程問題 - >裝箱和拆箱轉換
不幸的是沒有。 這是自動取消裝箱號碼的問題之一。 您可以
private Integer value = 0
return value != null ? value : 0
return value != null ? value : 0
我個人更喜歡第一種方法。 一般來說,我認為你不會有太多你應該有空號的情況。
另外,為什么使用大整數來存儲值。 如果你只是返回一點int,為什么不這樣存儲呢?
Eclipse將允許您進行語法顏色裝箱和拆箱操作(但不是一個或另一個)。 我把它們設置為鮮紅色:如果發生任何一種情況,這意味着我在匹配參數和參數方面一直很邋。
我懷疑這是一個警告案例。 這是自動拳擊的怪癖之一。
Joshua Bloch在他的“Effective Java”一書中闡述了這一點。 基本上,編譯器正在嘗試為您做更多的事情。 換句話說,這種類型的問題通常與使用有關,因此,很難“發現錯誤”,因為從語義上講,錯誤根本就不存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.