2013-05-07 25 views
2

由於某種方法,我得到一個Long值。現在,當我想將該數字加1時,編譯器會提醒我有關正在裝箱/拆箱以執行總和的值。是否可以在沒有裝箱/拆箱的情況下添加包裝數字?

public Long getLongValue() {return new Long(5L);} 
// ... 
Long val = getLongValue(); 
val++; // Warning: The expression of type Long is unboxed into long 
val = val + 1L; // Warning: The expression of type Long is unboxed into long 

由於Long類似乎沒有「add」方法,有沒有什麼辦法可以避免這種自動裝箱行爲?

(注:我知道我可以只@SuppressWarnings或手動盒/拆箱的值,而不是使用自動裝箱功能我試圖實現是完全避免裝箱/拆箱)

回答

0

因爲如你指出,Long沒有任何add()方法(或任何其它運算方法),你別無選擇,只能拆箱(手動或自動),它用它做計算,然後盒(手動或自動)的結果。

它可能會在年底,而不是拳擊每個計算(和子計算)時具有更好的性能,如果你拆箱計算之前,完成所有的計算,REBOX和拆箱。

0

做這種方式

long val = getLongValue(); 
    val++; 
    val = val + 1L; 

它更有效,不會有任何警告

相關問題