dav*_*ooh 6 java functional-programming optional
我有一段这样的代码:
return getObject()
.map(obj -> obj.getNullableField())
.orElseThrow(() -> new IllegalStateException("Object not found!"));
Run Code Online (Sandbox Code Playgroud)
目前,当给定Object的不存在时,我会抛出异常.
现在我还需要检查nullableField的Object存在.
一个明显的解决方案可能是这样的:
var fieldVal = getObject()
.map(obj -> obj.getNullableField())
.orElseThrow(() -> new IllegalStateException("Object not found!"));
return Optional.ofNullable(fieldVal)
.orElseThrow(() -> new IllegalStateException("Field is not present"));
Run Code Online (Sandbox Code Playgroud)
但是我想在同一个功能链中实现它......
我错过了什么?
它可以直接在同一个链中实现,你会得到不同的异常抛出.现在,它的可读性低于你的第一个解决方案,所以你需要权衡.
return getObject().map(obj -> Optional.ofNullable(obj.getNullableField())
.orElseThrow(() -> new IllegalStateException("Field is not present")))
.orElseThrow(() -> new IllegalStateException("Object not found!"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
314 次 |
| 最近记录: |