Próbuję zrozumieć ifPresent()
metodę Optional
API w Javie 8.
Mam prostą logikę:
Optional<User> user=...
user.ifPresent(doSomethingWithUser(user.get()));
Ale to powoduje błąd kompilacji:
ifPresent(java.util.functionError:(186, 74) java: 'void' type not allowed here)
Oczywiście mogę zrobić coś takiego:
if(user.isPresent())
{
doSomethingWithUser(user.get());
}
Ale to jest dokładnie jak zagracony null
czek.
Jeśli zmienię kod na ten:
user.ifPresent(new Consumer<User>() {
@Override public void accept(User user) {
doSomethingWithUser(user.get());
}
});
Kod staje się brudniejszy, co sprawia, że myślę o powrocie do starego null
czeku.
Jakieś pomysły?