【发布时间】:2016-04-19 15:05:11
【问题描述】:
我有以下代码。我试图找到一种方法来避免if (something.isPresent()) 行并声明Optional<Something> something。相反,我想链接 Optional.orElse() 方法并直接返回结果。但是我似乎找不到方法,因为如果找不到元素,该方法需要返回null,如果找到,则需要在返回之前调用它的方法。
有没有更好的方法?
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
public class OrElseWhat {
private class Something {
private String it;
Something(String it) { this.it = it; }
String getIt() { return it; }
}
private List<Something> somethings = new ArrayList<Something>() {
{
add(new Something("one"));
add(new Something("two"));
add(new Something("three"));
}
};
public String getFourOrNull() {
Optional<Something> something = somethings.stream()
.filter(s -> s.getIt().equals("four"))
.findAny();
if (something.isPresent()) {
return something.get().getIt();
}
return null;
}
}
【问题讨论】:
标签: java java-stream optional