J'essaie de comprendre la ifPresent()
méthode de l' Optional
API dans Java 8.
J'ai une logique simple:
Optional<User> user=...
user.ifPresent(doSomethingWithUser(user.get()));
Mais cela entraîne une erreur de compilation:
ifPresent(java.util.functionError:(186, 74) java: 'void' type not allowed here)
Bien sûr, je peux faire quelque chose comme ça:
if(user.isPresent())
{
doSomethingWithUser(user.get());
}
Mais c'est exactement comme un null
chèque encombré .
Si je change le code en ceci:
user.ifPresent(new Consumer<User>() {
@Override public void accept(User user) {
doSomethingWithUser(user.get());
}
});
Le code est de plus en plus sale, ce qui me fait penser à revenir à l'ancien null
chèque.
Des idées?