在条件下使用Optional的更好方法是什么?

Kis*_*ran 10 java java-8

我已经编写了代码,但事实是,我认为可以有更好的方法来编写以下代码,

这仅在Java 8中必须可行

private User getUser(String userId) {
    Optional<User> optionalUser = userDAO.getUserById(userId);
    if(optionalUser.isPresent())
        return optionalUser.get();
    throw new UserDefinedException("User not present");
}
Run Code Online (Sandbox Code Playgroud)

我希望将以上内容写成一行

Era*_*ran 27

您可以使用orElseThrow,如果存在则返回值,否则返回指定的异常:

private User getUser(String userId) {
    return userDAO.getUserById(userId)
                  .orElseThrow(() -> new UserDefinedException("User not present"));
}
Run Code Online (Sandbox Code Playgroud)

  • 可能更好`new UserDefinedException(“用户不存在-” + userId)` (11认同)