หลายครั้งที่ฉันตรวจสอบตัวเองเป็นโมฆะเมื่อดึงค่าจากลำดับชั้นข้อมูลบางอย่างเพื่อหลีกเลี่ยง NullPointerExceptions ซึ่งฉันพบว่ามีแนวโน้มที่จะเกิดข้อผิดพลาดและต้องมีสำเร็จรูปจำนวนมาก
ฉันได้เขียนกิจวัตรที่ง่ายมากซึ่งทำให้ฉันสามารถข้ามการตรวจสอบค่าว่างเมื่อดึงวัตถุ ...
public final class NoNPE {
    public static <T> T get(NoNPEInterface<T> in) {
        try {
            return in.get();
        } catch (NullPointerException e) {
            return null;
        }
    }
    public interface NoNPEInterface<T> {
        T get();
    }
}ฉันใช้มันแบบนี้ ...
Room room = NoNPE.get(() -> country.getTown().getHouses().get(0).getLivingRoom());ด้านบนทำให้ฉันได้รับวัตถุห้องหรือโมฆะโดยไม่ต้องตรวจสอบระดับผู้ปกครองทั้งหมด
คุณคิดอย่างไรกับข้างต้น? ฉันกำลังสร้างรูปแบบที่มีปัญหาหรือไม่? มีวิธีที่ดีกว่านี้ในความคิดของคุณ?
Option(หรือMaybe) monad :) อีกครั้ง
                
java.util.Optionalแทนค่า Null เพื่อแสดงข้อมูลที่ขาดหายไปหรือไม่? นี่เป็นเครื่องมือที่มีประโยชน์ทั้งสำหรับกรณีที่คุณอธิบายและกรณีที่คุณต้องการดำเนินการกับข้อมูลเริ่มต้นมากกว่าเพียงแค่ส่งคืนสภาพความล้มเหลวในตอนท้ายของห่วงโซ่ ..