Java - 检查数字是否为 Not Null,否则分配默认字符串值

Java - Check Not Null for a number, else assign default string value

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

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

我尝试使用以下方式但它失败了,因为 .orElse 需要一个双精度(也就是与 "value" 相同的数据类型)。 我可以使用任何 Java 方法来实现这一目标吗?

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

你不远,随便贴图值:

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

编译方法的版本:

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

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

这会起作用:

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

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

这取决于当你有 null 时你想做什么。

如果您可以使用默认的 long 值 - 然后使用您的方法,而不是将字符串放在 orElse.

中的默认值

如果您只想知道是否传递了一个空值,如果传递了则做一些不同的事情,但您不想 ==null,您可以在一个函数中使用 Optional::isPresent 调用if.

如果没有值不是你能容忍的状态,你可以使用Optional::orElseThrow抛出Exception。

最后,如果你只是想做一些你确实有价值的事情,看看Optional::ifPresent——它最适合这种情况。


如果你 use-case 详细一点,我会尝试 fine-tune 这个答案更合适。

这些是java8的所有API,在以后的版本中你有更多的灵活性。