Looking for java Keywords? Try Ask4Keywords

Java LanguageJava-Fallstricke - Nulls und NullPointerException


Bemerkungen

Der Wert null ist der Standardwert für einen nicht initialisierten Wert eines Felds, dessen Typ ein Referenztyp ist.

NullPointerException (oder NPE) ist die Ausnahme, die ausgelöst wird, wenn Sie versuchen, eine unangemessene Operation für den null Objektverweis auszuführen. Solche Operationen umfassen:

  • Aufruf einer Instanzmethode für ein null
  • Zugriff auf ein Feld eines null ,
  • Versuch, ein null Array-Objekt zu indizieren oder auf seine Länge zuzugreifen
  • Verwenden einer null als Mutex in einem synchronized Block,
  • Casting einer null Objektreferenz
  • Unboxing einer null und
  • eine null Objektreferenz werfen.

Die häufigsten Ursachen für NPEs:

  • Vergessen, ein Feld mit einem Referenztyp zu initialisieren,
  • Vergessen, Elemente eines Arrays eines Referenztyps zu initialisieren, oder
  • nicht die Prüfung der Ergebnisse bestimmter API - Methoden , die als wiederkehrende spezifiziert sind null unter bestimmten Umständen.

Beispiele für häufig verwendete Methoden, die null sind:

  • Die Methode get(key) in der Map API gibt eine null wenn Sie sie mit einem Schlüssel aufrufen, der keine Zuordnung hat.
  • Die getResource(path) und getResourceAsStream(path) in den ClassLoader und Class APIs geben null wenn die Ressource nicht gefunden werden kann.
  • Die get() -Methode in der Reference API gibt null wenn der Garbage Collector die Referenz gelöscht hat.
  • Verschiedene getXxxx Methoden in den Java EE-Servlet-APIs geben null wenn Sie versuchen, einen nicht vorhandenen Anforderungsparameter, eine Sitzung oder ein Sitzungsattribut usw. abzurufen.

Es gibt Strategien, um unerwünschte NPEs zu vermeiden, z. B. das explizite Testen auf null oder die Verwendung von "Yoda Notation". Diese Strategien haben jedoch oft das unerwünschte Ergebnis, dass Probleme in Ihrem Code verborgen werden, die wirklich behoben werden müssen.

Java-Fallstricke - Nulls und NullPointerException Verwandte Beispiele