有没有一种方法可以将Java8可选返回值与在null上打印消息结合起来?
我从以下代码开始:有没有一种方法可以将Java8可选返回值与在null上打印消息结合起来?,java,java-8,null,optional,Java,Java 8,Null,Optional,我从以下代码开始: String startingValue = getMyValue(); String finishingValue = ""; if (startingValue != null) { finishingValue = startingValue; } else { System.out.println("Value was null"); } 我想使用Java 8选项将其转换为如下内容: Optional<String> startingOp
String startingValue = getMyValue();
String finishingValue = "";
if (startingValue != null) {
finishingValue = startingValue;
} else {
System.out.println("Value was null");
}
我想使用Java 8选项将其转换为如下内容:
Optional<String> startingOptional = getMyOptional();
String finishingValue =
startingOptional
.map(value -> value)
.orElse(System.out.println("value not found"));
Optional startingOptional=getMyOptional();
字符串结束值=
启动可选
.map(值->值)
.orElse(System.out.println(“未找到值”);
我的问题是:有没有一种方法可以将Java8可选返回值与在null上打印消息结合起来?使用
OrelGet
:
Optional<String> startingOptional = getMyOptional();
String finishingValue = startingOptional.orElseGet(() -> {
System.out.println("value not found");
return "";
});
Optional startingOptional=getMyOptional();
字符串finishingValue=startingOptional.orElseGet(()->{
System.out.println(“未找到值”);
返回“”;
});
使用
.map(value->value)
是无用的:将值转换为自身不会改变任何东西。如果您使用的是Java 9或更高版本,并且您不想使用默认存根作为空值,而是分别处理空值和非空值,那么您也可以使用Optional#ifpresentorese(Consumer,Runnable)
方法,其第二个参数是空值的处理程序。
对于您的情况,它看起来像:
Optional startingOptional=getMyOptional();
启动可选
.map(值->值)
.如果存在(
value->{/*用你的值做点什么*/},
()->System.out.println(“未找到值”)
);
或者,输入局部变量:
getMyOptional()
.map(值->值)
.如果存在(
value->{/*用你的值做点什么*/},
()->System.out.println(“未找到值”)
);
ifpresentorese返回void。所以第一个代码片段无法编译。地图操作也没用,我的错误,修正了