Java-检查数字是否为Null,否则指定默认字符串值

时间:2019-07-18 21:31:47

标签: java java-8 optional

我正在寻找一种根据值是否为null来设置变量默认值的方法。

有问题的值是双精度型,默认值(如果该值为null)应该是字符串。

我尝试使用以下方式,但失败了,因为.orElse需要双精度(与“值”相同的数据类型)。 有什么我可以用来实现的Java方法吗?

Double value = 8.0;
Optional.ofNullable(value).orElse("not found")

4 个答案:

答案 0 :(得分:5)

您不远,只需映射值即可:

String strDouble = Optional.ofNullable(value).map(Objects::toString).orElse("not found");

答案 1 :(得分:1)

您编制的方法版本:

Object result = Optional.<Object>ofNullable(value).orElse("not found");

答案 2 :(得分:1)

由于赋值运算符的左侧可以是DoubleString,因此最好的做法是将其类型指定为Object

这将起作用:

Object value2 = Optional.<Object>ofNullable(value).orElse("not found");

(即DoubleString的类层次结构中唯一的共享类是Object)

答案 3 :(得分:0)

这取决于您在使用null时要执行的操作。

如果可以使用默认的long值-请使用您的方法,而不是字符串,将默认值放在MainData中。

如果您只想知道是否传递了null,并且这样做是否有所不同,但又不想拥有matching_label_rows.mainMatch_set,则可以在{{ 1}}。

如果没有值不是可以容忍的状态,则可以使用const MyComponent = ({ myArray = [] }) => { console.log("runs when myArray changes"); const newArray = myArray.map(x => x + 1); return <div /> } 引发异常。

最后,如果您只想做一些确实有价值的事情,请查看orElse-这是最适合此方案的情况。


如果您详细说明用例,我将尝试微调此答案以使其更适合。

这些都是Java 8的API,在更高版本中,您具有更大的灵活性。