'Optional.get()'没有'isPresent()'检查

时间:2016-08-02 16:03:12

标签: java java-8 java-stream optional

我在Java中有以下搜索代码:

return getTableViewController().getMe().getColumns().stream().filter($->Database.equalsColumnName($.getId(), columnId)).findFirst().get();

我希望按姓名找到列并返回第一个找到的列。

我理解有一个案例,什么都没找到,应该处理,但是如何处理?

这就是它想要的咒骂:

'Optional.get()' without 'isPresent()' check

如何解决?如果没有找到,我希望返回null

更新

好的,好吧,我只是没有意识到,findFirst()会返回Optional

4 个答案:

答案 0 :(得分:113)

get()替换为orElse(null)

答案 1 :(得分:17)

...findFirst().orElse(null);

返回值(如果存在),否则返回null。文档says传递的参数可能为nullorElseGetorElseThrow禁止的内容。)

答案 2 :(得分:0)

我的解决方案是通过这种方式进行检查

if(item.isPresent()){
  item.get().setId("1q2w3e4r5t6y")
}

答案 3 :(得分:0)

创建了可选内容,因此代码可以在这几十年后终于 避免 开始为空。

删除.get(),返回Optional本身,并使调用代码进行适当处理(就像在返回null的情况下一样)。