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");
由于赋值运算符的左侧可以是 Double
或 String
,因此最好将其类型指定为 Object
。
这会起作用:
Object value2 = Optional.<Object>ofNullable(value).orElse("not found");
(即 Double
和 String
的 class 层次结构中唯一共享的 class 是 Object)
这取决于当你有 null 时你想做什么。
如果您可以使用默认的 long 值 - 然后使用您的方法,而不是将字符串放在 orElse
.
中的默认值
如果您只想知道是否传递了一个空值,如果传递了则做一些不同的事情,但您不想 ==null
,您可以在一个函数中使用 Optional::isPresent
调用if
.
如果没有值不是你能容忍的状态,你可以使用Optional::orElseThrow
抛出Exception。
最后,如果你只是想做一些你确实有价值的事情,看看Optional::ifPresent
——它最适合这种情况。
如果你 use-case 详细一点,我会尝试 fine-tune 这个答案更合适。
这些是java8的所有API,在以后的版本中你有更多的灵活性。
我正在寻找一种方法来根据值是否为空来设置变量的默认值。
有问题的值是一个双精度值,默认值(如果该值为 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");
由于赋值运算符的左侧可以是 Double
或 String
,因此最好将其类型指定为 Object
。
这会起作用:
Object value2 = Optional.<Object>ofNullable(value).orElse("not found");
(即 Double
和 String
的 class 层次结构中唯一共享的 class 是 Object)
这取决于当你有 null 时你想做什么。
如果您可以使用默认的 long 值 - 然后使用您的方法,而不是将字符串放在 orElse
.
如果您只想知道是否传递了一个空值,如果传递了则做一些不同的事情,但您不想 ==null
,您可以在一个函数中使用 Optional::isPresent
调用if
.
如果没有值不是你能容忍的状态,你可以使用Optional::orElseThrow
抛出Exception。
最后,如果你只是想做一些你确实有价值的事情,看看Optional::ifPresent
——它最适合这种情况。
如果你 use-case 详细一点,我会尝试 fine-tune 这个答案更合适。
这些是java8的所有API,在以后的版本中你有更多的灵活性。