Tôi đang cố gắng hiểu ifPresent()
phương thức của Optional
API trong Java 8.
Tôi có logic đơn giản:
Optional<User> user=...
user.ifPresent(doSomethingWithUser(user.get()));
Nhưng điều này dẫn đến lỗi biên dịch:
ifPresent(java.util.functionError:(186, 74) java: 'void' type not allowed here)
Tất nhiên tôi có thể làm điều gì đó như sau:
if(user.isPresent())
{
doSomethingWithUser(user.get());
}
Nhưng điều này giống hệt như một null
tấm séc lộn xộn .
Nếu tôi thay đổi mã thành này:
user.ifPresent(new Consumer<User>() {
@Override public void accept(User user) {
doSomethingWithUser(user.get());
}
});
Mã ngày càng bẩn khiến tôi nghĩ đến việc quay lại null
séc cũ .
Bất kỳ ý tưởng?