java - 登录 Java 8 可选

标签 java java-8 option-type

我有一些使用 Java 8 Optional 的代码,当我没有得到所需的结果时,我想在其中记录错误。

如以下示例所示,我在尝试记录错误消息时收到错误的行上进行了注释:

    @PutMapping("/organs/{id}")
    public Organ updateorgan(@PathVariable(value = "id") Long organId,
                                           @Valid @RequestBody Organ organDetails) {

        Organ organ = organRepository.findById(organId)
                .orElseThrow(() -> 
                   // LOG.log(Level.SEVERE,"Organ with id "+organId + "not found");
                   new ResourceNotFoundException("organ", "id", organId)
                );

        organ.setName(organDetails.getName());
        Organ updatedOrgan = organRepository.save(organ);
        LOG.info("Updated organ details. Response :"+updatedOrgan);
        return updatedOrgan;
    }

P.S - 我只想使用 Java 8 方法,而不是传统方法。

提前致谢!

最佳答案

使其成为一个 lambda,其主体由大括号和 return 语句括起来,而不是表达式 lambda:

Organ organ = organRepository.findById(organId)
                .orElseThrow(() -> {
                    LOG.log(Level.SEVERE,"Organ with id "+organId + "not found");
                    return new ResourceNotFoundException("organ", "id", organId);
                });

关于java - 登录 Java 8 可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58930459/

相关文章:

java - 如何使用线程池读取多个文件?

java - 使用 HashSet 相对于 HashMap 的优点

java - 作者使用 thenCompose 而不是 thenComposeAsync 的原因是否正确

swift - Swift 中类型和显式展开类型之间的区别

ios - 使用 dispatch_async() 时 Swift 中的 Optionals 问题

swift - 在不设置存储属性的情况下使 Swift 初始化程序失败

java - 将参数传递给 TokensRegex 的正确编码是什么

Java Joda-Time DateTime 如何从儒略日期创建日期

Java反射将一个方法作为另一个方法的参数传递?

java - 如何在方法内部更改传递的 Lambda 表达式的值