Heim >Java >javaLernprogramm >Behandlung von NullPointerException mit Optional

Behandlung von NullPointerException mit Optional

Linda Hamilton
Linda HamiltonOriginal
2025-01-04 06:41:41302Durchsuche

Handling NullPointerException with Optional

Definition

NPE ist eine Laufzeitausnahme, die auftritt, wenn versucht wird, eine Nullreferenz zu verwenden. Die JVM löst diese Ausnahme aus, um vor der Dereferenzierung von Nullzeigern zu schützen, die zu Programmabstürzen führen könnte.

Häufige Ursachen

Grundlegendes Beispiel

String name = null;
int length = name.length(); // NPE thrown here

Hier versuchen wir, eine Methode für eine Nullreferenz aufzurufen. Der Variablenname enthält kein Objekt, daher können wir length() nicht aufrufen.

Beispiel für verschachtelte Objekte

class User {
    Address address;
}
class Address {
    String street;
}

User user = new User();
String street = user.address.street; // NPE: address is null

Dies zeigt, wie der Zugriff auf verschachtelte Objekte fehlschlagen kann. Während der Benutzer vorhanden ist, ist die Adresse null, da wir sie nicht initialisiert haben.

Sammlungsbeispiel

List<String> items = null;
items.add("item"); // NPE

Sammlungen sollten vor der Verwendung initialisiert werden. Besser leer initialisieren: List items = new ArrayList<>();

Optionale Verwendung erklärt

Grundlegende optionale Verkettung

Optional<User> user = Optional.of(new User());
String street = user
    .flatMap(User::getAddress)  // Converts User to Optional<Address>
    .map(Address::getStreet)    // Converts Address to Optional<String>
    .orElse("Unknown");         // Provides default if null

Dies ersetzt verschachtelte Nullprüfungen durch eine fließende API. Jeder Schritt behandelt potenzielle Nullen sicher.

Karte und Filter

Optional<String> upperStreet = Optional.ofNullable(user)
    .filter(u -> u.getName() != null)  // Only proceed if name exists
    .map(User::getName)                // Get the name
    .map(String::toUpperCase);         // Transform it

Dies zeigt, wie man Werte transformiert und dabei Nullen sicher verarbeitet.

Standardwerte

String result = Optional.ofNullable(someString)
    .orElse("default");

Eine saubere Möglichkeit, Fallback-Werte anstelle von Nullprüfungen bereitzustellen.

Bedingte Ausführung

Optional.ofNullable(user)
    .ifPresent(u -> System.out.println(u.getName()));

Führen Sie Code nur aus, wenn der Wert vorhanden ist, und ersetzen Sie If-Not-Null-Prüfungen.

Das obige ist der detaillierte Inhalt vonBehandlung von NullPointerException mit Optional. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:ObjekteNächster Artikel:Objekte