Java LanguagePièges de Java - Nulls et NullPointerException


Remarques

La valeur null est la valeur par défaut pour une valeur non initialisée d'un champ dont le type est un type de référence.

NullPointerException (ou NPE) est l'exception levée lorsque vous tentez d'effectuer une opération inappropriée sur la référence d'objet null . Ces opérations comprennent:

  • appeler une méthode d'instance sur un objet cible null ,
  • accéder à un champ d'un objet cible null ,
  • tenter d'indexer un objet de tableau null ou d'accéder à sa longueur,
  • utiliser une référence d'objet null comme mutex dans un bloc synchronized ,
  • lancer une référence à un objet null ,
  • désencapsuler une référence d'objet null et
  • lancer une référence d'objet null .

Les causes profondes les plus courantes des NPE:

  • oublier d'initialiser un champ avec un type de référence,
  • oublier d'initialiser des éléments d'un tableau d'un type de référence, ou
  • ne pas tester les résultats de certaines méthodes API spécifiées comme renvoyant null dans certaines circonstances.

Les exemples de méthodes couramment utilisées qui renvoient null incluent:

  • La méthode get(key) de l'API Map renvoie une valeur null si vous l'appelez avec une clé sans mappage.
  • Les getResource(path) et getResourceAsStream(path) dans les API ClassLoader et Class ClassLoader null si la ressource est introuvable.
  • La méthode get() de l'API de Reference renvoie null si le ramasse-miettes a effacé la référence.
  • Diverses méthodes getXxxx API de servlet Java EE renvoient null si vous tentez de récupérer un paramètre de requête, un attribut de session ou de session inexistant, etc.

Il existe des stratégies pour éviter les NPE indésirables, comme tester explicitement null ou utiliser "Yoda Notation", mais ces stratégies ont souvent pour résultat indésirable de cacher des problèmes dans votre code qui devraient vraiment être résolus.

Pièges de Java - Nulls et NullPointerException Exemples Liés