我有可选的。我想编写听起来像这样的代码: 如果存在object,请将其从Optional转换为Object并与他一起执行剩余的代码。如果不存在,请返回代码404。我尝试执行此操作,但不起作用。我不知道如何在这里使用return语句。
Object objectFromOptional = optional.stream()
.findFirst().orElse(return ResponseEntity.notFound().build());
答案 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)
您可以简单地这样使用,而无需使用return
和optional.stream()
Object objectFromOptional = optional.orElse(ResponseEntity.notFound().build());
注意:正如 @Andy 所述,ResponseEntity.notFound().build()
可能是一项昂贵的操作