sdf*_*fsd 55 java lambda spring spring-mvc optional
我使用Optional工具进行用户和邀请验证
@DeleteMapping("/friends/{username}")
public
HttpEntity<Boolean> removeFriend(
@ApiParam(value = "The user's name", required = true) @PathVariable String username
) {
Long fromId = authorizationService.getUserId();
return userService.findByUsername(username)
.map(user -> {
return friendshipService.findFriendship(fromId, user.getId())
.map(friendship -> {
friendshipService.removeFriendship(friendship);
friendship.setToId(friendship.getFromId());
friendship.setFromId(friendship.getToId());
friendshipService.removeFriendship(friendship);
return ResponseEntity.ok(true);
}).orElseGet(() -> ResponseEntity.notFound().build());
}).orElseThrow(() -> new ResourceNotFoundException("User not found"));
Run Code Online (Sandbox Code Playgroud)
但是,IntelliJ正在着色我的灰色返回 https://zapodaj.net/2f48b1a26c392.png.html 但是当我删除返回时,它向我突出显示没有返回https://zapodaj.net/37605f08165c9.png.html
有人可以解释它是如何工作的以及它的全部内容?
See*_*ose 120
你的陈述lambda
param -> { return expression; }
Run Code Online (Sandbox Code Playgroud)
可以更改为表达式lambda:
param -> expression
Run Code Online (Sandbox Code Playgroud)
简单,不是吗?请注意,需要删除大括号和分号.
有时我发现如果代码块足够长,将大括号保留在原处很有用(我认为这可以提高可读性)
//noinspection CodeBlock2Expr在 Android Studio 中,您可以在方法开始时使用本地禁用警告,如下例所示
//noinspection CodeBlock2Expr
button.setOnClickListener((View v) -> {
//a long single method call...
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31545 次 |
| 最近记录: |