Java 8のAPI のifPresent()
メソッドを理解しようとしていOptional
ます。
私は単純なロジックを持っています:
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
チェックに戻ることを考えさせられます。
何か案は?