Я пытаюсь понять 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
чеку.
Любые идеи?