我有这段代码,如果存在,我想返回一个元素,否则返回 null
List<String> myList = new ArrayList<>();
myList.add("Test");
myList.add("Example");
myList.add("Sth");
String str = myList.stream()
.filter(x -> x.equals("eee"))
.findFirst()
.orElseGet(null);
但无论如何我在线程“main”java.lang.NullPointerException 中得到了一个异常
最佳答案
orElseGet
获取一个供应商。你想使用 orElse
:
.findFirst().orElse(null);
使用供应商返回 null 没有多大意义,但如果你这样做,它看起来像:
.findFirst().orElseGet(() -> null); //if argument is null, you get the NPE
orElseGet
的 JavaDocs(感谢 bambam 的补充评论)提到它:
Throws:
NullPointerException - if value is not present and other is null
关于Java8 列表返回元素或 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53893921/