zdh*_*him 3 java optional java-8
我想使用Optional实用程序在JDK8中执行空检查.这是我写的代码,它给了我一个错误:
java.util.Optional stringToUse = java.util.Optional.of(childPage.getContentResource().getValueMap().get("jcr:description").toString());
stringToUse.ifPresent(description = stringToUse);
Run Code Online (Sandbox Code Playgroud)
这里"jcr:description"可以存在与否.如果它存在,我想在描述变量中使用该值,如果为null,则只需设置空白字符串以进行描述.Lambda表达式也可以在这里使用吗?谢谢
如果结果get("jcr:description")可以null,你不应该调用toString()它,因为没有什么,Optional可以做,如果它在使用之前的操作已经失败了NullPointerException.
您想要什么,可以通过以下方式实现:
Optional<String> stringToUse = Optional.ofNullable(
childPage.getContentResource().getValueMap().get("jcr:description")
).map(Object::toString);
Run Code Online (Sandbox Code Playgroud)
然后你可以用它作为
if(stringToUse.isPresent())
description = stringToUse.get();
Run Code Online (Sandbox Code Playgroud)
如果"不采取任何行动"是对不存在的价值的预期行动.或者,您可以为该案例指定回退值:
description = stringToUse.orElse("");
Run Code Online (Sandbox Code Playgroud)
然后,description始终使用字符串表示jcr:description或使用空字符串进行分配.
stringToUse.ifPresent(string -> description = string);如果description不是局部变量,则可以使用字段.但是,我不推荐它.
| 归档时间: |
|
| 查看次数: |
3074 次 |
| 最近记录: |