我正在寻找一种根据值是否为null来设置变量默认值的方法。
有问题的值是双精度型,默认值(如果该值为null)应该是字符串。
我尝试使用以下方式,但失败了,因为.orElse需要双精度(与“值”相同的数据类型)。 有什么我可以用来实现的Java方法吗?
Double value = 8.0;
Optional.ofNullable(value).orElse("not found")
答案 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)
由于赋值运算符的左侧可以是Double
或String
,因此最好的做法是将其类型指定为Object
。
这将起作用:
Object value2 = Optional.<Object>ofNullable(value).orElse("not found");
(即Double
和String
的类层次结构中唯一的共享类是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,在更高版本中,您具有更大的灵活性。