java - 如何从可选中提取字段参数,或者如果为空则抛出异常?

标签 java java-8

String result = service.getResult();

if (result == null) {
    DaoObject obj = crudRepository.findOne(..);
    if (obj != null) {
        result = obj.getContent();
    } else {
        throw NotFoundException();
    }
}

service.process(result);

如果DaoObject将是 Optional<DaoObject> , 我可以做些什么来使用 java 8 实现与上面相同的效果?

带有 .orElseThrow(() -> new NotFoundException()); 的东西,但是上面的代码在流中看起来如何?

附带问题:我应该使用 () -> new NotFoundException() 吗?或 NotFoundException::new

最佳答案

你的假设是正确的。 这将导致以下代码:

Optional<DaoObject> obj = crudRepository.findOne(..);

result = obj.orElseThrow(() -> new NotFoundException()).getContent();

或者,如果您愿意,可以拆分语句以使其更具可读性:

DoaObject object = obj.orElseThrow(() -> new NotFoundException());
result = object.getContent();

请注意 () -> new NotFoundException()NotFoundException::new 完全相同,所以这只是您认为更具可读性的问题.

关于java - 如何从可选中提取字段参数,或者如果为空则抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29229060/

相关文章:

java - 流 : how map in Streams work

java - 使用 Apache Commons Math 从数字系列中获取中位数

java-8 - JavaFX : ObsevableMap keySet as an ObservableSet

java套接字写入然后从套接字读取

java.net.UnknownHostException : Unable to resolve host "api. themoviedb.org

Java 8 : Found unsigned entry in resource

java - Java 8 中具有默认方法的黑白抽象类和接口(interface)的差异示例

java - 在 Java 中,流相对于循环的优势是什么?

java - 同一个算法在Java和C中的性能分析

java - Hibernate Envers仅使用servlet保存用户名