Bunu görebiliyorum @Nullableve @Nonnullek açıklamalar s'yi önlemede yardımcı olabilirNullPointerException ama çok ilerlemiyorlar.
- Bu ek açıklamaların etkinliği bir dolaylı aktarım düzeyinden sonra tamamen düşer, bu nedenle yalnızca birkaçını eklerseniz çok fazla yayılmazlar.
- Bu ek açıklamalar iyi uygulanmadığından, işaretli bir değerin
@Nonnullnull olmadığını ve sonuç olarak null kontrol gerçekleştirmediğini varsayma tehlikesi vardır .
Aşağıdaki kod ile işaretlenmiş bir parametre neden @Nonnullolmak nullherhangi bir şikayet yükseltmeden. NullPointerExceptionÇalıştırıldığında bir atar .
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
}
}
Bu ek açıklamaları daha katı hale getirmenin ve / veya daha fazla yaymanın bir yolu var mı?
@Nonnullçağrıldığında bir döküm gerektiren olduğunu düşünüyorum @Nonnull. Tabii ki, Java 7'de bir açıklama ile yayın yapmak mümkün değildir, ancak Java 8, dökümler dahil olmak üzere bir değişkenin kullanımına ek açıklama uygulama yeteneği ekleyecektir. Böylece bu Java 8'de uygulamak mümkün olabilir.
(@NonNull Integer) ysözdizimsel olarak mümkündür, ancak bir derleyicinin ek açıklamaya dayalı olarak belirli bir bayt kodu yayınlamasına izin verilmez. Çalışma zamanı iddiaları için küçük yardımcı yöntemler bugs.eclipse.org/442103 (örn. directPathToA(assertNonNull(y))) ' De tartışıldığı gibi yeterlidir - ancak unutmayın, bu sadece hızlı başarısızlığa yardımcı olur. Tek güvenli yol, gerçek bir null denetim (artı umarım diğer dalda alternatif bir uygulama) gerçekleştirmektir.
@Nonnullve @Nullablebirden çok benzer annoations olduğu gibi (Bkz bahsediyorsun bu soruyu ). Paketteki ek açıklamalardan mı bahsediyorsunuz javax.annotation?

@Nullableya@Nonnullda değer ise, ancak "solicit tartışma muhtemeldir" çok olduğunu