Maison >Java >javaDidacticiel >Comment résoudre l'exception java.lang.NullPointerException ?

Comment résoudre l'exception java.lang.NullPointerException ?

王林
王林original
2023-06-25 14:30:216327parcourir

Dans la programmation Java, vous pouvez rencontrer l'exception java.lang.NullPointerException (ci-après dénommée NPE). Cette exception est généralement levée lorsque vous essayez d'utiliser un objet nul ou d'accéder à une référence nulle, et elle indique qu'une valeur nulle inattendue a été trouvée dans le code.

Il existe de nombreuses façons de résoudre le NPE. Cet article présentera plusieurs solutions courantes.

  1. Vérification des références nulles

La raison la plus courante est d'accéder à un objet nul ou à une référence nulle. Lorsque vous utilisez un objet dans le code, assurez-vous que l'objet n'est pas nul. Une exception NPE se produit lorsque l'objet est nul. Pour éviter cela, recherchez toujours une référence nulle avant de référencer un objet.

Par exemple, dans le code suivant, la méthode checkName() renvoie null, vous devez donc vérifier si sa valeur de retour est nulle.

String name = checkName();
if(name != null){
  // do something with name
} else {
  // handle null value
}
  1. Évitez d'utiliser des objets nuls

Éviter l'utilisation d'objets nuls peut résoudre efficacement le problème du NPE. Vous pouvez éviter l'utilisation d'objets nuls en utilisant la classe Facultative, qui a été introduite dans Java 8 pour fournir une meilleure façon de représenter des valeurs potentiellement nulles.

Par exemple, dans le code suivant, une variable de type Facultatif peut contenir une valeur non nulle de type String.

Optional<String> value = Optional.of("test");
if(value.isPresent()){
  // do something with value
} else {
  // handle null value
}
  1. Utiliser les valeurs par défaut

Parfois, vous devrez peut-être fournir une valeur par défaut pour les valeurs nulles afin d'éviter les NPE. Les valeurs par défaut peuvent être fournies à l'aide de l'opérateur ternaire ou des instructions if/else. Voici un exemple utilisant l'opérateur ternaire :

String name = checkName();
String result = (name != null) ? name : "default value";
  1. Utilisation de l'annotation @NonNull

Les développeurs Java peuvent utiliser l'annotation @NonNull pour éviter les problèmes NPE. Cette annotation est utilisée lors de la phase de compilation du code pour garantir que les variables ou paramètres ne sont pas nuls.

Ce qui suit est un exemple de méthode annotée avec @NonNull :

public void printName(@NonNull String name){
  System.out.println(name);
}

Si une valeur nulle est passée lors de l'appel de la méthode printName(), un avertissement sera déclenché au moment de la compilation, ce qui peut empêcher NPE de se produire.

  1. Utilisation d'Objects.requireNonNull()

Java 7 a introduit la méthode Objects.requireNonNull(), qui est une méthode statique qui peut être utilisée pour vérifier si un objet est nul. Si la valeur du paramètre d'entrée est nulle, cette méthode lèvera une exception NullPointerException, sinon elle renverra le paramètre lui-même.

Ce qui suit est un exemple d'utilisation de la méthode Objects.requireNonNull() :

String value = Objects.requireNonNull(checkValue(), "value cannot be null");

Si la méthode checkValue() renvoie null, une exception sera levée.

Résumé

Voici nos méthodes pratiques pour résoudre les NPE. Lorsque vous rencontrez une exception NPE, ne paniquez pas. Vous pouvez rapidement résoudre le problème grâce aux méthodes ci-dessus. Dans le même temps, lorsque vous écrivez du code, essayez d’éviter les références nulles et les objets vides, qui peuvent rendre votre code plus lisible, clair et robuste.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn