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.
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.
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.
List<String> items = null; items.add("item"); // NPE
Sammlungen sollten vor der Verwendung initialisiert werden. Besser leer initialisieren: List
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.
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.
String result = Optional.ofNullable(someString) .orElse("default");
Eine saubere Möglichkeit, Fallback-Werte anstelle von Nullprüfungen bereitzustellen.
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!