Java 8:Lambda 流,按方法筛选,但有异常
我在尝试Java 8的Lambda表达式时遇到了问题。通常它工作正常,但现在我有了投掷的方法。最好查看以下代码:IOException
class Bank{
....
public Set<String> getActiveAccountNumbers() throws IOException {
Stream<Account> s = accounts.values().stream();
s = s.filter(a -> a.isActive());
Stream<String> ss = s.map(a -> a.getNumber());
return ss.collect(Collectors.toSet());
}
....
}
interface Account{
....
boolean isActive() throws IOException;
String getNumber() throws IOException;
....
}
问题是,它不会编译,因为我必须捕获isActive-和getNumber-Methods的可能异常。但是,即使我显式使用如下所示的 try-catch-Block,它仍然没有编译,因为我没有捕获异常。因此,要么JDK中存在错误,要么我不知道如何捕获这些异常。
class Bank{
....
//Doesn't compile either
public Set<String> getActiveAccountNumbers() throws IOException {
try{
Stream<Account> s = accounts.values().stream();
s = s.filter(a -> a.isActive());
Stream<String> ss = s.map(a -> a.getNumber());
return ss.collect(Collectors.toSet());
}catch(IOException ex){
}
}
....
}
我怎样才能让它工作?有人可以提示我正确的解决方案吗?