1
オプションのorElse
メソッドについては非常に混乱しています。私は次のようにコードを書き換える場合、正しいパス(ifPresent
)が選択されるJava 8オプションorElse isPresentとは対照的に
Optional<NotificationSettings> ons = userProfileDao.loadNotificationSettingsByTransportType(type);
NotificationSettings notificationSettings = ons.orElse(createNotificationSettings(profile, type));
:
Optional<NotificationSettings> ons = userProfileDao.loadNotificationSettingsByTransportType(type);
NotificationSettings notificationSettings = ons.isPresent() ? ons.get() : createNotificationSettings(profile, type);
を私は任意の値が存在するが
orElse
場合を毎回呼び出す次のコードを使用している
私はorElse
が私の例のように同じことをやっていると思いました。私は何が欠けていますか?
NotificationSettings notificationSettings =
ons.orElseGet(() -> createNotificationSettings(profile, type));
魔法はありません:代替値を使用orElseGet
を評価避けるため