9
วิธีการใช้คำอธิบายประกอบ @Nullable และ @Nonnull มีประสิทธิภาพมากขึ้นได้อย่างไร
ฉันเห็นว่าคำอธิบายประกอบ@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 …