Comment éviter l'erreur NullPointerException en Java?

J’utilise souvent object != null pour éviter les NullPointerException.

Quelle est l’alternative à :

if (myobject != null) {
    myobject.doSomething();
}

Si vous utilisez un IDE Java comme JetBrains IntelliJ IDEA, Eclipse ou Netbeans, vous pouvez utiliser les annotations pour résoudre ce problème.

En gros, vous avez @Nullable et @NotNull.

Vous pouvez les utiliser dans les méthodes et les paramètres, comme ceci :

@NotNull public static String show() {
    return "Welcome!";
}

OU:

@Nullable public static String show() {
    return "Welcome!";
}

Si les valeurs nulles ne sont pas autorisées, commencez par quelque chose comme ceci :

public void test(Object object) {
  if (object == null) {
    throw new IllegalArgumentException("...");
  }

Ensuite, dans le reste de cette méthode, vous savez que l’objet n’est pas nul.

Si les valeurs nulles sont autorisées, commencez par quelque chose comme ceci :

if (object == null) {
  // code 1
} else {
  // code 2
}

Dans la situation suivante, ne pas vérifier si une variable est nulle avant d’invoquer la méthode equals (exemple de comparaison de chaînes de caractères ci-dessous) :

if ( str.equals("lorem") ) {
 // ...
}

provoquera l’exception NullPointerException si str n’existe pas.

Vous pouvez éviter cela si vous comparez vos chaînes de caractères comme ceci :

if ( "lorem".equals(str) ) {
 // ...
}

Java 7 possède une nouvelle classe utilitaire java.util.Objects qui possède une méthode requireNonNull(). Cette méthode ne fait que lever l’exception NullPointerException si son argument est nul, mais elle nettoie un peu le code. Exemple :

Objects.requireNonNull(someObject);
someObject.doCalc();