Tar*_*riv 1 java null optional java-8
我一直在使用此代码:
Event rEvent = new Event();
Map<Long, Message> msgMap = getMsg();
Message msg = msgMap.get(rEvent.getMsgId());
Long id = Optional.ofNullable(rEvent.getPkId()).orElse(msg.getPkId());
Run Code Online (Sandbox Code Playgroud)
假设rEvent.getPkId()和 msg 都是null。所以Optional.ofNullable(rEvent.getPkId())会被跳过,然后orElse被执行。这里抛出NPE. 如何使用Optional.ofNullable多个空检查重新编码?
在你的情况下,我会简单地使用一个简单的 if else:
Long id = null; // default value
if(rEvent.getPkId() != null) {
id = rEvent.getPkId();
} else if(msg != null){
id = msg.getPkId();
}
Run Code Online (Sandbox Code Playgroud)
但是,如果你想练Optional,在这种情况下,你需要另一个Optional为msg:
Long message = Optional.ofNullable(msg)
.map(Message::getPkId)
.orElse(null);// default value OR:
//.orElseThrow(() -> new IllegalArgumentException("Pk Id shouldn't be null."))
Long id = Optional.ofNullable(rEvent.getPkId()).orElse(message);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
294 次 |
| 最近记录: |