Я намагаюся зрозуміти ifPresent()
метод Optional
API у Java 8.
У мене проста логіка:
Optional<User> user=...
user.ifPresent(doSomethingWithUser(user.get()));
Але це призводить до помилки компіляції:
ifPresent(java.util.functionError:(186, 74) java: 'void' type not allowed here)
Звичайно, я можу зробити щось подібне:
if(user.isPresent())
{
doSomethingWithUser(user.get());
}
Але це точно як захаращений null
чек.
Якщо я зміню код на такий:
user.ifPresent(new Consumer<User>() {
@Override public void accept(User user) {
doSomethingWithUser(user.get());
}
});
Код стає бруднішим, що змушує мене подумати повернутися до старої null
чеки.
Будь-які ідеї?