2017-07-27 71 views
3

我有一種情況,我只需要傳遞非空值而不是空字符串到存儲庫。Long值爲NaN

對於字符串,我保持常量「NULL_VALUE」,對於Double和Float,我使用NaN。

同樣是有辦法保留一些價值Long, Integer and Boolean

public static void main(String... args) { 

    Float fVal = Float.NaN; 
    System.out.println("Float NaN :" + fVal); 

    Double dVal = Double.NaN; 
    System.out.println("Double NaN :" + dVal); 

// Integer iVal = Integer.NaN; 
// System.out.println("Integer NaN :" + iVal); 

// Boolean boolVal = Boolean.NaB; // Not a boolean 

} 

恐怕要保持0或一些大的淡水河谷(999999999對於int)。

什麼是最好的方法?

+0

不,唯一的非null布爾值是true和false。這就是所有可用的。如果你想表示一個「不是真正的價值」的價值,那傳統上是'null' *是爲什麼。因此,您需要將系統的其餘部分更改爲接受空值,或者在其他地方有更多信息來表示是否將列視爲「不是值」。 –

+0

「非空值」,像99.99%的時間沒有?^^ – azro

+0

你可以使用Java8'Optional',但這可能不是你想要的 – Lino

回答

0

如果我正確理解你的問題,你不想堅持null值到你的數據庫。

在默認像FloatBoolean等對象是null你不得不退回到相應的原語如默認值:0.0ffloatfalseboolean等等...

另一種方法是定義您自己的默認值。就像你已經說"NULL_VALUE"String可能不是那麼糟糕,因爲沒有其他的選擇。