如何在Lambda中使用return关键字

时间:2019-08-04 18:39:09

标签: java java-8 return java-stream optional

我有可选的。我想编写听起来像这样的代码: 如果存在object,请将其从Optional转换为Object并与他一起执行剩余的代码。如果不存在,请返回代码404。我尝试执行此操作,但不起作用。我不知道如何在这里使用return语句。

Object objectFromOptional = optional.stream()
                .findFirst().orElse(return ResponseEntity.notFound().build());

2 个答案:

答案 0 :(得分:3)

不需要return关键字,您可以使用:

Object objectFromOptional = optional.stream()
                .findFirst()
                .orElse(ResponseEntity.notFound().build());

编辑

在发表评论后,建议的解决方案可以是:

private static final ResponseEntity<Object> notFound = ResponseEntity.notFound().build(); 
...
Object objectFromOptional = optional
                .orElse(notFound);

或者如评论中所述,您可以使用orElseGet来吸引供应商,例如:

Object objectFromOptional = optional
        .orElseGet(() -> ResponseEntity.notFound().build());

答案 1 :(得分:0)

您可以简单地这样使用,而无需使用returnoptional.stream()

Object objectFromOptional = optional.orElse(ResponseEntity.notFound().build());

注意:正如 @Andy 所述,ResponseEntity.notFound().build()可能是一项昂贵的操作