Heim > Java > javaLernprogramm > Hauptteil

Optionale Klasse in Java 8: Umgang mit möglichen Nullwerten mithilfe der Methode orElseThrow()

WBOY
Freigeben: 2023-07-30 13:57:13
Original
2996 Leute haben es durchsucht

Optionale Klasse in Java 8: So verwenden Sie die Methode orElseThrow(), um möglicherweise Nullwerte zu verarbeiten

Einführung:
In der Java-Entwicklung stoßen wir häufig auf Situationen, in denen wir möglicherweise mit Nullwerten umgehen. In früheren Java-Versionen haben wir normalerweise null verwendet, um das Fehlen eines Werts anzuzeigen. Es gibt jedoch einige Probleme bei der Verwendung von Null. Beispielsweise müssen wir häufig feststellen, ob es Null ist, und es besteht die Gefahr, dass Nullzeigerausnahmen auftreten. Um diese Probleme zu lösen, führte Java 8 die Klasse Optional ein. Die optionale Klasse bietet eine elegante Möglichkeit, potenziell Nullwerte zu verarbeiten.
In diesem Artikel wird orElseThrow(), eine wichtige Methode der optionalen Klasse, vorgestellt und ihre Verwendung anhand von Beispielcode demonstriert.

Grundlegende Verwendung der optionalen Klasse: Die
Optional-Klasse ist eine in Java 8 eingeführte Containerklasse, die zum Umschließen eines Werts verwendet wird, der möglicherweise Null ist. Es bietet einige Methoden, die uns beim Umgang mit Nullwertsituationen helfen. Schauen wir uns zunächst die grundlegende Verwendung der optionalen Klasse an.

  1. Erstellen optionaler Objekte
    Sie können optionale Objekte über die statische Methode Optional.ofNullable(T-Wert) erstellen. Wenn der Wert null ist, wird ein leeres optionales Objekt erstellt. Wenn der Wert nicht null ist, wird ein optionales Objekt erstellt, das einen Wert enthält.

Beispielcode:

String name = "Alice";
Optional<String> optionalName = Optional.ofNullable(name);

// 另一种方式创建空的 Optional
Optional<String> emptyOptional = Optional.empty();
Nach dem Login kopieren
  1. Bestimmen Sie, ob Optional einen Wert hat
    Sie können feststellen, ob ein Wert vorhanden ist, indem Sie die Methode isPresent() des Optional-Objekts aufrufen. Diese Methode gibt einen booleschen Wert zurück, der angibt, ob das optionale Objekt einen Wert ungleich Null enthält.

Beispielcode:

if (optionalName.isPresent()) {
    System.out.println("存在值");
} else {
    System.out.println("值为空");
}
Nach dem Login kopieren
  1. Erhalten Sie den Wert von Optional
    Sie können seinen Wert erhalten, indem Sie die Methode get() des optionalen Objekts aufrufen. Bevor Sie jedoch die Methode get() aufrufen, verwenden Sie am besten die Methode isPresent(), um festzustellen, ob das Optional vorhanden ist. Denn wenn Optional leer ist, löst der Aufruf der get()-Methode eine NoSuchElementException-Ausnahme aus.

Beispielcode:

if (optionalName.isPresent()) {
    System.out.println("姓名为:" + optionalName.get());
} else {
    System.out.println("姓名为空");
}
Nach dem Login kopieren

Verwendung von orElseThrow():
Zusätzlich zur oben genannten Grundverwendung bietet die optionale Klasse auch eine leistungsstarke Methode orElseThrow(). Diese Methode löst die angegebene Ausnahme aus, wenn das optionale Objekt keinen Wert enthält.

  1. Verwenden Sie die Methode orElseThrow(), um Ausnahmen auszulösen
    Sie können die auszulösende Ausnahme angeben, indem Sie die Methode orElseThrow(Supplier AusnahmeSupplier) des optionalen Objekts aufrufen. Beachten Sie, dass hier eine Referenz auf eine abnormale Konstruktormethode übergeben wird.

Beispielcode:

Double price = null;
Double finalPrice = Optional.ofNullable(price)
        .orElseThrow(() -> new IllegalArgumentException("价格为空"));

System.out.println("最终价格为:" + finalPrice);
Nach dem Login kopieren

Wenn im obigen Code der Preis leer ist, wird eine IllegalArgumentException ausgelöst.

  1. Benutzerdefinierte Ausnahmeklasse
    Wir können eine Ausnahmeklasse auch anpassen, um bestimmte Ausnahmen zu behandeln.

Beispielcode:

class PriceNullException extends RuntimeException {
    public PriceNullException(String message) {
        super(message);
    }
}

Double price = null;
Double finalPrice = Optional.ofNullable(price)
        .orElseThrow(() -> new PriceNullException("价格为空"));

System.out.println("最终价格为:" + finalPrice);
Nach dem Login kopieren

Wenn im obigen Code der Preis leer ist, wird eine benutzerdefinierte PriceNullException-Ausnahme ausgelöst.

  1. Vergleich zwischen der orElseThrow()-Methode und anderen Methoden
    Im Vergleich zur vorherigen get()-Methode löst die orElseThrow()-Methode keine NoSuchElementException-Ausnahme aus, wenn Optional leer ist, kann aber eine benutzerdefinierte Ausnahme auslösen. Dadurch wird der Code sauberer und besser lesbar.

Fazit:
Dieser Artikel stellt die Verwendung der orElseThrow()-Methode der optionalen Klasse in Java 8 vor und demonstriert anhand von Codebeispielen, wie mit möglichen Nullwerten umgegangen wird. Die Verwendung der optionalen Klasse kann unseren Code stabiler und sicherer machen und die Häufigkeit von Nullzeigerausnahmen verringern. Sie müssen jedoch auch darauf achten, es bei der Verwendung optionaler Klassen nicht zu übertreiben, damit der Code nicht zu langatmig und schwer verständlich wird. Ich hoffe, dass dieser Artikel den Lesern helfen kann, die optionale Klasse besser zu verstehen und zu verwenden.

Das obige ist der detaillierte Inhalt vonOptionale Klasse in Java 8: Umgang mit möglichen Nullwerten mithilfe der Methode orElseThrow(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!