【发布时间】:2018-08-06 13:41:31
【问题描述】:
以下代码的等效 lambda 表达式是什么?
List<String> List = new ArrayList<String>();
for (String var: alreadyList) {
try {
if (getNumber(var) == num) {
filteredList.add(var);
}
} catch(NullPointerException exception) {
throw exception;
}
}
-
getNumber方法抛出Nullpointerexception并且上面的代码也在一个向调用者抛出相同异常的方法中。
这是通常的 lambda 表达式,但如何将 Nullpointerexception 放入其中?
List<String> List = alreadyList.stream()
.filter(var -> getNumber(var) == num)
.collect(Collectors.toList());
【问题讨论】:
-
原来的代码很奇怪。如您所见,它只是重新抛出异常。换句话说,它并没有真正做任何事情。
-
NullPointerException是一个未经检查的异常,因此您根本不需要明确地捕获/抛出它(并且可以说不应该。)所以简短的答案是您拥有的基于流的代码是已经相当于上面的代码了,上面的代码只是捕获了一些不必要的异常。
标签: java lambda exception-handling java-8 java-stream