声明拉姆达可以表达拉姆达

问题描述:

我不使用可选设施声明拉姆达可以表达拉姆达

@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")); 

但是用户的邀请确认,的IntelliJ是着色我的灰色收益来代替 https://zapodaj.net/2f48b1a26c392.png.html 但是当我删除了回报,它突出了我没有回报https://zapodaj.net/37605f08165c9.png.html

有人可以解释它是如何工作的,它是什么一回事?

就这么简单:

你的陈述拉姆达

user -> { return expression; } 

可以改变一个表达式的λ:

user -> expression 

注意,即大括号和分号需除去。

+0

作品。谢谢。您认为哪种方式更适合lambda https://pastebin.com/imEtjwHp或https://pastebin.com/gcaUMYQ4? – sdfsd

+0

在这种情况下没有_better_。只要你喜欢就做。但对我而言,这两个代码片段都不可读。这应该始终是编码的第一个标准。 – Seelenvirtuose