Nie bardzo wiem jak miałbym opisać moje pytanie więc posłuże się przykładem. Mamy np. metodę która pobiera użytkownikaz bazy i zwraca Optional:
Optional<User> getById(String id);
I teraz chciałbym pobrać użytkownika z bazy na podstawie np. ID, a jeśli taki istnieje to chciałbym wykonać jakąś akcje niezwiązaną z tym obiektem. Mogę wówczas zrobić w ten sposób:
if (repository.getById(id).isPresent()) {
doSomething()
}
ale jest to jak wiadomo bardzo słabe rozwiązanie. Innym może być takie:
repository.getById(id).ifPresent(user -> doSomething());
I to jest niby lepsze ale z drugiej strony parametr usera jest tu ignorowany. Czy w waszym kodzie jest to do przyjęcia czy raczej świadczy to o jakichś błędach w logice?
EDIT:
Tak sobie trochę pogooglowałem i wysło na to że coś takiego zadziała:
repository.getById(id).ifPresent(__-> doSomething());
Osobiście sie z tym w kodzie nie spotkałem więc w sumie nie mam zdania na ile to jest poprawne podejście chociaz w Kotlinie też jest podobne rozwiązanie z tym że uzywany jest pojedynczy znak.
exist
byłoby zdecydowanie lepsze ale chodziło mi bardziej o zobrazowanie problemu.