


Teilen Sie den Beispielcode der neu eingeführten Klasse Optional in Java8
Optional ist eine neu eingeführte Klasse in Java 8
Dies ist ein Container, der das kann sei ein Nullobjekt. Wenn der Wert vorhanden ist, gibt die Methode isPresent() true zurück und der Aufruf der Methode get() gibt das Objekt zurück.
java.lang.NullPointerException: Solange Sie es wagen, sich selbst als Java-Programmierer zu bezeichnen, sind Sie mit dieser Ausnahme bestens vertraut. Um zu verhindern, dass diese Ausnahme ausgelöst wird, schreiben wir oft Code wie diesen:
Person person = people.find("John Smith"); if (person != null) { person.doSomething(); }
Leider vergessen wir in den meisten Java-Codes oft, nach Nullverweisen zu suchen, daher folgte auch NullPointerException .
„Null Sucks.“ Das ist Doug Leas Einschätzung von Null. Wenn Sie als Java-Programmierer immer noch nicht wissen, wer Doug Lea ist, dann beeilen Sie sich und machen Sie die Lektionen nach. Ohne seinen Beitrag können wir nur die primitivste Ausrüstung von Java verwenden, um Multithreading zu handhaben.
„Ich nenne es meinen Milliarden-Dollar-Fehler.“, der dies behaupten kann, ist der Erfinder der Nullreferenz, Sir C. A. R. Hoare. Sie müssen Doug Lea nicht kennen, aber Sie müssen diesen alten Mann kennen, sonst sind Sie nicht für die schnelle Sortierung qualifiziert.
In der Java-Welt ist die Verwendung des Null-Object-Modus eine gängige Methode zur Lösung des Nullreferenzproblems. In diesem Fall wird im Fall von „nichts“ ein Nullobjekt zurückgegeben, und der Clientcode muss nicht beurteilen, ob es leer ist. Allerdings gibt es bei diesem Ansatz einige Probleme. Zuerst müssen wir unbedingt Code für Null Object schreiben, und wenn wir dieses Muster maßstabsgetreu anwenden wollen, müssen wir Null Object für fast jede Klasse schreiben.
Zum Glück haben wir noch eine weitere Option: Optional. Optional ist eine Kapselung von Nullable-Objekten und die Implementierung ist nicht kompliziert. In einigen Sprachen, wie z. B. Scala, wird die optionale Implementierung Teil der Sprache. Für Java-Programmierer bietet Guava optionalen Support. Lassen Sie uns ohne weitere Umschweife zunächst darüber sprechen, wie Sie Optional verwenden, um den vorherigen Code zu vervollständigen.
Optional person = people.find("John Smith"); if (person.isPresent()) { person.get().doSomething(); }
Wenn isPresent() hier false zurückgibt, bedeutet dies, dass es sich um ein leeres Objekt handelt. Andernfalls können wir den Inhalt herausnehmen und tun, was wir tun möchten.
Wenn Sie sich auf eine Reduzierung der Codegröße freuen, werden Sie hier leider enttäuscht sein. Allein hinsichtlich der Codegröße verfügt Optional sogar über mehr Code als das Original. Aber das Gute ist, dass Sie nie vergessen werden, nach Null zu suchen, denn was wir hier bekommen, ist kein Objekt der Person-Klasse, sondern ein Optional.
Das Folgende ist der Code für die persönliche Praxis
public class OptionalTest { /** * of后面接给optional设置的值 但是不能为空 如果为空会报空指针异常 * @Title: ofTest * @Description: TODO * @param: * @return: void * @throws */ // @Test public void ofTest() { Optional<String> optional = Optional.of("123"); System.out.println(optional.get()); try { optional = Optional.of(null); System.out.println(optional.get()); //get方法是获取optional的值 类型取决于声明的时候 }catch(NullPointerException e) { System.out.println("空指针异常"); } } /** * ofNullable 和of类似 但是ofNullable可以设置null值 如果是Null值得话取值会报NoSuchElementException 异常 * @Title: ofNullableTest * @Description: TODO * @param: * @return: void * @throws */ // @Test public void ofNullableTest() { Optional<String> optional = Optional.ofNullable("123"); System.out.println(optional.get()); try { optional = Optional.ofNullable(null); System.out.println(optional.get()); }catch(NoSuchElementException e) { System.out.println("NoSuchElementException 异常"); } } /** * ifPresent用来判断optional中有没有值存在 如果有则为真 * @Title: isPresentTest * @Description: TODO * @param: * @return: void * @throws */ // @Test public void isPresentTest() { Optional<String> optional = Optional.ofNullable(null); if(optional.isPresent()) { System.out.println(optional.get()); } else { System.out.println("值为空"); } } /** * ifPresent和isPresent类似 只不过它支持λ表达式 * @Title: ifPresentTest * @Description: TODO * @param: * @return: void * @throws */ // @Test public void ifPresentTest() { Optional<String> optional = Optional.ofNullable("123"); optional.ifPresent(var ->{ System.out.println(var); }); } /** * orElse方法,如果值为空的话会用参数中的值去替换 即设置默认值 * @Title: orElseTest * @Description: TODO * @param: * @return: void * @throws */ // @Test public void orElseTest() { Optional<String> optional = Optional.ofNullable("123"); System.out.println(optional.orElse("有没有")); optional = Optional.ofNullable(null); System.out.println(optional.orElse("有没有")); } /** * orElseGet方法 和orElse类似 不过此方法接受Supplier接口的实现用来生成默认值 * @Title: orElseGetTest * @Description: TODO * @param: * @return: void * @throws */ // @Test public void orElseGetTest() { Optional<String> optional = Optional.ofNullable("123"); System.out.println(optional.orElseGet(()->"123456")); optional = Optional.ofNullable(null); System.out.println(optional.orElseGet(()->"123456")); } /** * map方法 如果有值则会对值进行mapping中的处理 处理结果存在则创建并返回Optional类型的结果 否则返回空 * @Title: mapTest * @Description: TODO * @param: * @return: void * @throws */ // @Test public void mapTest() { Optional<String> optional = Optional.ofNullable("abc"); System.out.println(optional.map(var->var.toUpperCase()).get()); } /** * flatMap和map类似 只不过mapping中必须返回Option类型的数据 * @Title: flatMapTest * @Description: TODO * @param: * @return: void * @throws */ // @Test public void flatMapTest() { Optional<String> optional = Optional.ofNullable("abc"); System.out.println(optional.flatMap(var->Optional.of(var.toUpperCase())).get()); } /** * filter对optional进行过滤,mapping中为过滤的条件 如果不满足条件 返回一个为空的Optional * @Title: filterTest * @Description: TODO * @param: * @return: void * @throws */ @Test public void filterTest() { try { Optional<String> optional = Optional.ofNullable("一二三四五六七八"); System.out.println(optional.filter(var ->var.length()>6).get()); System.out.println(optional.filter(var ->var.length()<6).get()); }catch(NoSuchElementException e) { System.out.println("optional的值为空"); } }
[Verwandte Empfehlungen]
1. Verwendung von Optional, einer neuen API in Java 8 Beispiel2.
Parsing Java 8 Optionales Klassenbeispiel-Tutorial
Das obige ist der detaillierte Inhalt vonTeilen Sie den Beispielcode der neu eingeführten Klasse Optional in Java8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Java8 berechnet das Datum vor einem Jahr oder ein Jahr später mithilfe der minus()-Methode, um das Datum vor einem Jahr zu berechnen packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo09{publicstaticvoidmain(String[ ]args ){LocalDatetoday=LocalDate.now();LocalDate previousYear=today.minus(1,ChronoUni

So berechnen Sie das Datum eine Woche später in Java8. In diesem Beispiel wird das Datum eine Woche später berechnet. Das LocalDate-Datum enthält keine Zeitinformationen. Seine plus()-Methode wird zum Hinzufügen von Tagen, Wochen und Monaten verwendet. Die ChronoUnit-Klasse deklariert diese Zeiteinheiten. Da LocalDate ebenfalls ein unveränderlicher Typ ist, müssen Sie Variablen verwenden, um nach der Rückgabe Werte zuzuweisen. packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo08{publicstaticvoidmain(String[

Vorwort Optional ist in Java ein Containerobjekt, das einen Wert ungleich Null enthalten oder leer sein kann. Sein Hauptzweck besteht darin, Nullzeigerausnahmen beim Schreiben von Code zu vermeiden. Die vollständige Verwendung von Optional in Java8 ist wie folgt: 1. Erstellen Sie ein optionales Objekt. Sie können ein optionales Objekt mit einem Nicht-Null-Wert über die of()-Methode erstellen, zum Beispiel: Optionaloptional=Optional.of("value"). ; Es kann auch über die ofNullable()-Methode erstellt werden. Ein optionales Objekt, das möglicherweise einen Nullwert enthält, zum Beispiel: Optionaloptional=Optiona

So verwenden Sie die optionale Funktion zur Verarbeitung von Nullwerten in Java. Bei der Java-Programmierung stoßen wir häufig auf Situationen, in denen Nullwerte verarbeitet werden. Um diese Situation zu vermeiden, hat Java8 die optionale Klasse zur Behandlung von Nullwertsituationen eingeführt. Die optionale Klasse ist eine Containerklasse, die einen nicht leeren Wert oder keinen Wert enthalten kann. Mithilfe der optionalen Klasse können wir Nullwertsituationen eleganter behandeln und Nullzeigerausnahmen vermeiden. unter

Die Clock-Klasse von Java8 Java8 fügt eine Clock-Klasse zum Abrufen des aktuellen Zeitstempels oder von Datums- und Uhrzeitinformationen in der aktuellen Zeitzone hinzu. Wo zuvor System.currentTimeInMillis() und TimeZone.getDefault() verwendet wurden, können sie durch Clock ersetzt werden. packagecom.shxt.demo02;importjava.time.Clock;publicclassDemo10{publicstaticvoidmain(String[]args){//Gibt die aktuelle Zeitbasis zurück

Rufen Sie den aktuellen Zeitstempel in Java8 ab. Die Instant-Klasse verfügt über eine statische Factory-Methode now(), die den aktuellen Zeitstempel zurückgibt, wie unten gezeigt: packagecom.shxt.demo02;importjava.time.Instant;publicclassDemo16{publicstaticvoidmain(String[]args) {Instanttimestamp=Instant.now();System.out.println("Whatisvalueofthisinstant"+timestamp.t

So verwenden Sie vordefinierte Formatierungstools in Java8, um Datumsangaben zu analysieren oder zu formatieren packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.format.DateTimeFormatter;publicclassDemo17{publicstaticvoidmain(String[]args){StringdayAfterTommorrow="20180205 ";LocalDateformatted =LocalDate.parse

Bestimmen Sie, ob zwei Datumsangaben in Java8 gleich sind packagecom.shxt.demo02;importjava.time.LocalDate;publicclassDemo04{publicstaticvoidmain(String[]args){LocalDatedate1=LocalDate.now();LocalDatedate2=LocalDate.of(2018,2,5) ;if(date1.equals(date2)){System.out.println("Times are equal");}e
