ฉันพยายามเข้าใจ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
เช็คแบบเก่า
ความคิดใด ๆ ?