Uno tra i peggiori e maggiormente insidiosi nemici del buon codice è il lancio di una NullPointerException. Peggiori perché molto frequente e insidiosi perché molto difficile da prevedere se non applicando una buona dose di attenzione durante la scrittura del codice.
Nel tempo sono state proposte varie soluzioni: si va dall’utilizzo di tipi cuscinetto (Optional<T>) alla scrittura di nuovi linguaggi (Ceylon) o di costrutti zuccherosi (Groovy ‘?’), ma nulla di applicabile velocemente e semplicemente al linguaggio Java.

A dire il vero la soluzione era già stata proposta con la JSR-305 il cui processo di inclusione nella specifica Java è attualmente ad un punto morto.
Fortunatamente la comunità di sviluppatori è più rapida ed è presente un’implementazione ospitata su Google Code e presente anche sui repository Maven.

La soluzione proposta sarebbe questa: si applica l’annotazione @Nullable alle variabile che ci si aspetta possano essere null, mentre si usa @Nonnull per quelle che ci si aspetta non possano mai essere null. Semplice e veloce. Ci penserà poi il compilatore/analizzatore statico di codice a verificare che non rischiamo di incorrere nell’odiata eccezione senza volerlo.
Nella versione ottimizzata vi è anche la possibilità di annotare il package per definire una semantica predefinita ed annotare solo le variabili nulle o viceversa.

Si dia il caso che questa sia proprio la soluzione ideale per Java. È infatti sufficiente configurare il proprio IDE per utilizzare queste annotazione nella fase di compilazione del codice ed impedirci così di incorrere in NullPointerException indesiderate. Senza contare che i principali software di analisi statica del codice utilizzano o possono utilizzare queste semplici annotazioni per metterci in guardia da accessi non controllati.

Annunci