我在Java中有以下搜索代码:
return getTableViewController().getMe().getColumns().stream().filter($->Database.equalsColumnName($.getId(), columnId)).findFirst().get();
我希望按姓名找到列并返回第一个找到的列。
我理解有一个案例,什么都没找到,应该处理,但是如何处理?
这就是它想要的咒骂:
'Optional.get()' without 'isPresent()' check
如何解决?如果没有找到,我希望返回null
。
更新
好的,好吧,我只是没有意识到,findFirst()
会返回Optional
。
答案 0 :(得分:113)
将get()
替换为orElse(null)
。
答案 1 :(得分:17)
...findFirst().orElse(null);
返回值(如果存在),否则返回null
。文档says传递的参数可能为null
(orElseGet
和orElseThrow
禁止的内容。)
答案 2 :(得分:0)
我的解决方案是通过这种方式进行检查
if(item.isPresent()){
item.get().setId("1q2w3e4r5t6y")
}
答案 3 :(得分:0)
创建了可选内容,因此代码可以在这几十年后终于 避免 开始为空。
删除.get(),返回Optional本身,并使调用代码进行适当处理(就像在返回null的情况下一样)。