2017-07-27 137 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可能不是那么糟糕,因为没有其他的选择。