如何 return 在 Java 的条件语句范围内对象?

How to return object in conditional statement scope in Java?

我正在学习javaspring。我必须获得一个用户,然后将 Foo 保存到数据库中。用户对象是可选的,所以我必须把新的 Foo 放在 ifPresent 中,然后我怎么能 return 结果,而我不能像 java 脚本那样使用 let

  @PostMapping("/foo")
  public ResponseEntity<Foo> createFoo(@Valid @RequestBody Checkout checkout) throws URISyntaxException {
    Optional<User> _user = userRepository.findById(userId);
    _user.ifPresent(
      user-> 
        Foo _foo = checkout.getFoo();
        _foo.setUser(user);
        Foo foo = checkoutService.saveFoo(_foo );
      }
    );

    return ResponseEntity
      .created(new URI("/api/foo/" + foo .getId()))
      .headers(HeaderUtil.createEntityCreationAlert(applicationName, true, ENTITY_NAME, result.getId().toString()))
      .body(foo );```

你可以这样做:

 @PostMapping("/foo")
  public ResponseEntity<Foo> createFoo(@Valid @RequestBody Checkout checkout) throws URISyntaxException {
    Optional<User> _user = userRepository.findById(userId);
    Foo foo = _user.map(user -> {
        Foo _foo = checkout.getFoo();
        _foo.setUser(user);
        return checkoutService.saveFoo(_foo);
    }).orElse(null);

    return ResponseEntity
      .created(new URI("/api/foo/" + foo .getId()))
      .headers(HeaderUtil.createEntityCreationAlert(applicationName, true, ENTITY_NAME, result.getId().toString()))
      .body(foo );
 }

映射允许 return 另一种类型的对象,在这种情况下我们 return 值 return 由 checkoutService.saveFoo(_foo) 编辑; 并且我们将其存储在 foo 变量中,以防 userRepository.findById(userId) returns 为 null,您可以使用 .orElse() 作为注释 @QBrute.

    Foo foo = _user.map(user -> {
        Foo _foo = checkout.getFoo();
        _foo.setUser(user);
        return checkoutService.saveFoo(_foo);
    }).orElse(<default value>);