นำตัวอย่างโค้ดสองตัวอย่าง:
if(optional.isPresent()) {
//do your thing
}
if(variable != null) {
//do your thing
}
เท่าที่ฉันสามารถบอกความแตกต่างที่ชัดเจนที่สุดคือตัวเลือกต้องสร้างวัตถุเพิ่มเติม
อย่างไรก็ตามหลายคนเริ่มใช้ตัวเลือกอย่างรวดเร็ว ข้อดีของการใช้ตัวเลือกกับการตรวจสอบค่า Null คืออะไร?
if
งบsoooooทศวรรษที่ผ่านมาและทุกคนโดยใช้แนวคิด monad และ lambdas ในขณะนี้
if(x.isPresent) fails_on_null(x.get)
คุณออกจากระบบประเภทและต้องให้การรับประกันว่ารหัสจะไม่ทำลาย "ในหัวของคุณ" ในระยะ (สั้นยอมรับ) ระหว่างเงื่อนไขและการเรียกใช้ฟังก์ชั่น ในoptional.ifPresent(fails_on_null)
ระบบประเภททำให้การรับประกันนี้สำหรับคุณและคุณไม่ต้องกังวล
Optional.ifPresent
(และการสร้าง Java อื่น ๆ ) คือคุณสามารถแก้ไขตัวแปรสุดท้ายได้อย่างมีประสิทธิภาพเท่านั้นและไม่สามารถโยนข้อยกเว้นที่เลือก นั่นเป็นเหตุผลมากพอที่จะหลีกเลี่ยงได้ifPresent
อย่างน่าเสียดาย