場景:長原始的NaN值想
1)I具有既可以設置或不設置較長的狀態變量。
2)這個長變量從Long.MIN_VALUE到Long.MAX_VALUE有效值包括零
3)這是性能敏感的代碼,所以我不希望使用龍包裝類型
如何我是否會爲此長時間寫一個'is set'檢查?我真的必須添加第二個布爾值來測試這個long是否有效嗎?這似乎馬虎。我知道我可以在這裏使用一個Long包裝器,但是這似乎是一個性能浪費,因爲要創建這麼多的對象並檢查null。
僞代碼(這是那種我想要的):
class foo {
long someLong = NaN; //NaN = hypothetical not a number like Double
public reset() {
someLong = NaN;
}
public doSomethingElse() {
if(someLong !=NaN) {
//report
reset();
}
}
public doSomeStuff() {
if(someLong == NaN) {
someLong = //something
}
}
}
}
任何你不想使用布爾值來設置或不設置的東西的原因? – JAM 2012-04-27 03:46:50
只需使用一個額外的布爾設置/未設置。 – Ryan 2012-04-27 03:47:36
好的,很酷。感謝人口普查。這裏的布爾值似乎是正確的解決方案。我只是認爲它不是最可讀的,並且在其他類型中看到的約定之外(例如,Object:null,double:NaN),但在這種情況下,性能會保證它。 – 2012-04-27 03:52:57