Dim*_*ims 64 java optional java-8 java-stream
我在Java中有以下搜索代码:
return getTableViewController().getMe().getColumns().stream().filter($->Database.equalsColumnName($.getId(), columnId)).findFirst().get();
Run Code Online (Sandbox Code Playgroud)
我希望按名称找到列并返回第一个找到的列.
我知道有一个案例,什么都没找到,应该处理,但如何?
这就是它所要的咒骂:
'Optional.get()' without 'isPresent()' check
Run Code Online (Sandbox Code Playgroud)
?
怎么修?null如果没有找到,我希望回来.
UPDATE
好吧,好吧,我只是没有意识到,那会findFirst()回来Optional.
And*_*ner 139
替换get()为orElse(null).
And*_*lko 20
...findFirst().orElse(null);
Run Code Online (Sandbox Code Playgroud)
返回值(如果存在),否则返回null.文档说传递的参数可能是null(禁止的内容orElseGet和orElseThrow).
我的解决方案是这样检查
if(item.isPresent()){
item.get().setId("1q2w3e4r5t6y")
}
Run Code Online (Sandbox Code Playgroud)
创建Optional是为了让代码在几十年后终于可以开始避免null。
删除 .get(),返回Optional 本身并让调用代码适当地处理它(就像在返回 null 的情况下必须做的那样)。
| 归档时间: |
|
| 查看次数: |
57083 次 |
| 最近记录: |