2017-03-21 46 views
-5

以這種方式使用get()方法時使用可選的推薦方法嗎?Java 8可選get()方法

Optional<User> loginUser = userService.findUserByEmail(authentication.getName()); 

if (loginUser.isPresent()) { 
    User user = loginUser.get(); 
    user.setLastLogin(new Date()); 
    userService.saveUser(user); 
} 
+3

這是一種使用它的方式,雖然在這種特殊的情況下,它提供了比使用null更少的優勢(除了記錄代碼,它可能返回一個空結果而不是拋出異常例如)。 – Kayaman

+0

問題是,如果最終用戶沒有登錄會發生什麼?你想讓應用程序繼續前進嗎? – VGR

回答

1
loginUser.ifPresent(user -> { 
    user.setLastLogin(new Date()); 
    userService.saveUser(user); 
}); 

更優雅。這裏有更多的主題:isPresent() is bad for you.

+0

isPresent()是(有時)不好,但是你的代碼只是用不同的語法做同樣的事情。 – VGR