ฉันเห็นว่าคำอธิบายประกอบ@Nullableและอาจมีประโยชน์ในการป้องกันs แต่พวกเขาไม่เผยแพร่ไกลมาก@NonnullNullPointerException
- ประสิทธิผลของการเพิ่มความคิดเห็นเหล่านี้จะลดลงอย่างสมบูรณ์หลังจากผ่านไปหนึ่งระดับทางอ้อมดังนั้นหากคุณเพิ่มเพียงไม่กี่อย่างพวกเขาก็จะไม่เผยแพร่ไกลมากนัก
- เนื่องจากคำอธิบายประกอบเหล่านี้ไม่ได้บังคับใช้อย่างดีมีความเสี่ยงที่จะถือว่าค่าที่ทำเครื่องหมายด้วย@Nonnullนั้นไม่เป็นโมฆะดังนั้นจึงไม่สามารถทำการตรวจสอบโมฆะได้
โค้ดข้างล่างนี้เป็นสาเหตุของพารามิเตอร์ที่มีเครื่องหมาย@Nonnullที่จะเป็นnullโดยไม่ต้องเพิ่มข้อร้องเรียนใด ๆ มันจะพ่นNullPointerExceptionเมื่อมันถูกเรียกใช้
public class Clazz {
    public static void main(String[] args){
        Clazz clazz = new Clazz();
        // this line raises a complaint with the IDE (IntelliJ 11)
        clazz.directPathToA(null);
        // this line does not
        clazz.indirectPathToA(null); 
    }
    public void indirectPathToA(Integer y){
        directPathToA(y);
    }
    public void directPathToA(@Nonnull Integer x){
        x.toString(); // do stuff to x        
    }
}
มีวิธีที่จะทำให้คำอธิบายประกอบเหล่านี้มีการบังคับใช้อย่างเข้มงวดมากขึ้นและ / หรือเผยแพร่เพิ่มเติมหรือไม่
@Nonnullเมื่อโทรหา@Nonnullวิธีที่มีตัวแปรที่ไม่สามารถใช้ได้ แน่นอนว่าการหล่อด้วยคำอธิบายประกอบนั้นเป็นไปไม่ได้ใน Java 7 แต่ Java 8 จะเพิ่มความสามารถในการใช้คำอธิบายประกอบกับการใช้ตัวแปรรวมถึงการปลดเปลื้อง ดังนั้นนี่อาจเป็นไปได้ที่จะนำไปใช้ใน Java 8
                (@NonNull Integer) yมีความเป็นไปได้ทาง syntactically, แต่คอมไพเลอร์ไม่ได้รับอนุญาตให้ปล่อยรหัสไบต์เฉพาะใด ๆ ที่อ้างอิงจากคำอธิบายประกอบ. สำหรับวิธีการยืนยันแบบรันไทม์วิธีใช้ตัวช่วยตัวจิ๋วนั้นก็เพียงพอแล้วดังที่กล่าวไว้ในbugs.eclipse.org/442103 (เช่น, directPathToA(assertNonNull(y))) - แต่โปรดจำไว้ว่านี่จะช่วยให้ล้มเหลวอย่างรวดเร็วเท่านั้น วิธีที่ปลอดภัยเพียงอย่างเดียวคือการตรวจสอบ null จริง (บวกกับการใช้งานทางเลือกในสาขาอื่น)
                @Nonnullและ@Nullableคุณกำลังพูดถึงในขณะที่มีหลาย annoations คล้ายกัน (ดูคำถามนี้ ) คุณกำลังพูดถึงคำอธิบายประกอบในแพ็คเกจjavax.annotationหรือไม่
                
@Nullableหรือ@Nonnullแต่ถ้าพวกเขามีค่ามันมาก "น่าจะเรียกร้องการอภิปราย"