Heim Java JavaBase Was sind die neuen Funktionen von Java14?

Was sind die neuen Funktionen von Java14?

Jun 20, 2020 pm 01:33 PM
特性

Was sind die neuen Funktionen von Java14?

1. Ausdruck wechseln

In früheren Versionen war der Ausdruck wechseln nur eine „Vorschau“-Funktion. Ich möchte Sie daran erinnern, dass der Zweck der Funktionen in der „Vorschau“-Phase darin besteht, Feedback zu sammeln. Diese Funktionen können sich jederzeit ändern und basierend auf den Feedback-Ergebnissen können diese Funktionen sogar entfernt werden, in der Regel jedoch alle Vorschaufunktionen wird am Ende in Java behoben.

(Empfohlenes Tutorial: Java Getting Started Program )

Der Vorteil des neuen Schalterausdrucks besteht darin, dass es kein Standard-Überspringverhalten (Fall-Through) mehr gibt. Umfangreicher und Ausdrücke und Kombinationen sind einfacher zu schreiben, sodass Fehler weniger wahrscheinlich auftreten. Beispielsweise können Schalterausdrücke jetzt die Pfeilsyntax verwenden, wie unten gezeigt:

var log = switch (event) {
case PLAY -> "User has triggered the play button";
case STOP, PAUSE -> "User needs a break";
default -> {
String message = event.toString();
LocalDateTime now = LocalDateTime.now();
yield "Unknown event " + message +
" logged on " + now;
}
};
Nach dem Login kopieren

2. Textblöcke

Eine der in Java 13 eingeführten Vorschaufunktionen sind Textblöcke . Mit Textblöcken lassen sich mehrzeilige String-Literale einfach schreiben. Diese Funktion erhält in Java 14 ihre zweite Vorschau und es gibt einige Änderungen. Beispielsweise kann die Formatierung von mehrzeiligem Text das Schreiben vieler String-Verkettungsoperationen und Escape-Sequenzen erfordern. Der folgende Code zeigt ein HTML-Beispiel:

String html = "<HTML>" +
"\n\t" + "<BODY>" +
"\n\t\t" + "<H1>\"Java 14 is here!\"</H1>" +
"\n\t" + "</BODY>" +
"\n" + "</HTML>";
Nach dem Login kopieren

Mit Textblöcken kann dieser Vorgang vereinfacht werden. Verwenden Sie einfach dreifache Anführungszeichen als Start- und End-Tags des Textblocks, und Sie können eleganter Code schreiben für:

String html = """
<HTML>
<BODY>
<H1>"Java 14 is here!"</H1>
</BODY>
</HTML>""";
Nach dem Login kopieren

Textblöcke sind aussagekräftiger als normale String-Literale.

Java 14 führt zwei neue Escape-Sequenzen ein. Erstens können Sie die neue Escape-Sequenz verwenden, um ein Leerzeichen darzustellen. Zweitens können Sie einen Backslash verwenden, um das Einfügen eines Zeilenumbruchzeichens am Ende der Zeile zu vermeiden. Dadurch ist es einfacher, eine lange Zeile innerhalb eines Textblocks in mehrere Zeilen aufzuteilen, um die Lesbarkeit zu verbessern.

Zum Beispiel kann man jetzt eine mehrzeilige Zeichenfolge wie folgt schreiben:

String literal =
"Lorem ipsum dolor sit amet, consectetur adipiscing " +
"elit, sed do eiusmod tempor incididunt ut labore " +
"et dolore magna aliqua.";
Nach dem Login kopieren

Unter Verwendung von Escape-Sequenzen in Textblöcken kann man es so schreiben:

String text = """
Lorem ipsum dolor sit amet, consectetur adipiscing \
elit, sed do eiusmod tempor incididunt ut labore \
et dolore magna aliqua.\
""";
Nach dem Login kopieren

(Video-Tutorial empfohlen:Java-Video-Tutorial)

3. Mustervergleich von Instanzen

Java 14 führt eine Vorschaufunktion ein, mit der es wird nicht mehr benötigt. Schreiben Sie Code, der zunächst eine Instanzbeurteilung und dann eine erzwungene Konvertierung durchführt. Zum Beispiel der folgende Code:

if (obj instanceof Group) {
Group group = (Group) obj;
// use group specific methods
var entries = group.getEntries();
}
Nach dem Login kopieren

Mit dieser Vorschaufunktion kann er umgestaltet werden in:

if (obj instanceof Group group) {
var entries = group.getEntries();
}
Nach dem Login kopieren

Da die bedingte Prüfung erfordert, dass obj vom Typ „Gruppe“ ist, warum müssen Sie es einschließen? es im bedingten Code wie im ersten Code? Was ist mit der Angabe von obj als Gruppentyp im Block? Dies kann zu Fehlern führen.

Diese prägnantere Syntax kann die meisten Umwandlungen in Java-Programmen eliminieren.

JEP 305 erklärt diese Änderung und gibt ein Beispiel aus Joshua Blochs Buch „Effective Java“, das die folgenden zwei äquivalenten Schreibweisen demonstriert:

@Override public boolean equals(Object o) {
return (o instanceof CaseInsensitiveString) &&
((CaseInsensitiveString) o).s.equalsIgnoreCase(s);
}
Nach dem Login kopieren

Dieser Absatz Der im Code umgewandelte redundante CaseInsensitiveString kann entfernt und wie folgt konvertiert werden:

@Override public boolean equals(Object o) {
return (o instanceof CaseInsensitiveString cis) &&
cis.s.equalsIgnoreCase(s);
}
Nach dem Login kopieren

Diese Vorschaufunktion ist einen Versuch wert, da sie die Tür zu einem allgemeineren Mustervergleich öffnet. Die Idee des Mustervergleichs besteht darin, der Sprache eine praktische Syntax zum Extrahieren von Komponenten aus Objekten basierend auf bestimmten Bedingungen bereitzustellen. Dies ist genau der Anwendungsfall für den Operator „instanceof“, da es sich bei der Bedingung um eine Typprüfung handelt und der Extraktionsvorgang den Aufruf der entsprechenden Methode oder den Zugriff auf ein bestimmtes Feld erfordert.

Mit anderen Worten, diese Vorschaufunktion ist nur der Anfang. In Zukunft wird diese Funktion definitiv mehr Coderedundanz reduzieren und dadurch die Möglichkeit von Fehlern verringern.

4. Aufnahme

Eine weitere Vorschaufunktion ist die Aufnahme. Wie andere zuvor eingeführte Vorschaufunktionen folgt auch diese Vorschaufunktion dem Trend zur Reduzierung redundanten Java-Codes und kann Entwicklern helfen, genaueren Code zu schreiben. Record wird hauptsächlich für Klassen in bestimmten Feldern verwendet. Seine Verschiebungsfunktion besteht darin, Daten ohne benutzerdefiniertes Verhalten zu speichern.

Kommen wir gleich zur Sache und nehmen ein Beispiel der einfachsten Domänenklasse: BankTransaction, die eine Transaktion darstellt und drei Felder enthält: Datum, Betrag und Beschreibung. Bei der Definition einer Klasse sind viele Aspekte zu berücksichtigen:

Konstruktor, Getter, Methode toString(), hashCode() und equal() Der Code für diese Teile wird normalerweise automatisch von der IDE generiert und nimmt einen Platz ein viel Platz. Hier ist die vollständig generierte BankTransaction-Klasse:

public class BankTransaction {private final LocalDate date;
private final double amount;
private final String description;
public BankTransaction(final LocalDate date,
final double amount,
final String description) {
this.date = date;
this.amount = amount;
this.description = description;
}
public LocalDate date() {
return date;
}
public double amount() {
return amount;
}
public String description() {
return description;
}
@Override
public String toString() {
return "BankTransaction{" +
"date=" + date +
", amount=" + amount +
", description=&#39;" + description + &#39;\&#39;&#39; +
&#39;}&#39;;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
BankTransaction that = (BankTransaction) o;
return Double.compare(that.amount, amount) == 0 &&
date.equals(that.date) &&
description.equals(that.description);
}
@Override
public int hashCode() {
return Objects.hash(date, amount, description);
}
}
Nach dem Login kopieren

Java 14 bietet eine Möglichkeit, diese Redundanz aufzulösen und den Zweck klarer auszudrücken: Der einzige Zweck dieser Klasse besteht darin, Daten zusammenzuführen. Record stellt Implementierungen der Methoden equal, hashCode und toString bereit. Daher kann die BankTransaction-Klasse wie folgt umgestaltet werden:

public record BankTransaction(LocalDate date,double amount,
String description) {}
Nach dem Login kopieren

Durch Record können Sie „automatisch“ die Implementierung von equal, hashCode und toString sowie die Konstruktor- und Getter-Methoden abrufen.

Um dieses Beispiel auszuprobieren, müssen Sie die Datei mit dem Vorschau-Flag kompilieren:

javac --enable-preview --release 14 Die Felder von BankTransaction.javarecord sind implizit endgültig. Daher können Datensatzfelder nicht neu zugewiesen werden. Es ist jedoch zu beachten, dass dies nicht bedeutet, dass der gesamte Datensatz unveränderlich ist. Die in den Feldern gespeicherten Objekte können veränderbar sein.

5. NullPointerException

一些人认为,抛出NullPointerException异常应该当做新的“Hello World”程序来看待,因为NullPointerException是早晚会遇到的。玩笑归玩笑,这个异常的确会造成困扰,因为它经常出现在生产环境的日志中,会导致调试非常困难,因为它并不会显示原始的代码。例如,如下代码:

var name = user.getLocation().getCity().getName();
Nach dem Login kopieren

在Java 14之前,你可能会得到如下的错误:

Exception in thread "main" java.lang.NullPointerExceptionat NullPointerExample.main(NullPointerExample.java:5)
Nach dem Login kopieren

不幸的是,如果在第5行是一个包含了多个方法调用的赋值语句(如getLocation()和getCity()),那么任何一个都可能会返回null。实际上,变量user也可能是null。因此,无法判断是谁导致了NullPointerException。

在Java 14中,新的JVM特性可以显示更详细的诊断信息:

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Location.getCity()" because the return value of "User.getLocation()" is nullat NullPointerExample.main(NullPointerExample.java:5)
Nach dem Login kopieren

该消息包含两个明确的组成部分:

后果:Location.getCity()无法被调用原因:User.getLocation()的返回值为null增强版本的诊断信息只有在使用下述标志运行Java时才有效:

-XX:+ShowCodeDetailsInExceptionMessages
Nach dem Login kopieren

下面是个例子:

java -XX:+ShowCodeDetailsInExceptionMessages NullPointerExample
Nach dem Login kopieren

在以后的版本中,该选项可能会成为默认。

这项改进不仅对于方法调用有效,其他可能会导致NullPointerException的地方也有效,包括字段访问、数组访问、赋值等。

Das obige ist der detaillierte Inhalt vonWas sind die neuen Funktionen von Java14?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Einführung in die Unterschiede zwischen der Win7-Home-Version und der Win7-Ultimate-Version Einführung in die Unterschiede zwischen der Win7-Home-Version und der Win7-Ultimate-Version Jul 12, 2023 pm 08:41 PM

Jeder weiß, dass es viele Versionen des Win7-Systems gibt, z. B. die Win7-Ultimate-Version, die Win7-Professional-Version, die Win7-Home-Version usw. Viele Benutzer sind zwischen der Home-Version und der Ultimate-Version verwickelt und wissen nicht, welche Version sie wählen sollen. Deshalb werde ich Ihnen heute die Unterschiede zwischen Win7 Family Meal und Win7 Ultimate erläutern. 1. Experience Different Home Basic Edition macht Ihre täglichen Abläufe schneller und einfacher und ermöglicht Ihnen einen schnelleren und bequemeren Zugriff auf Ihre am häufigsten verwendeten Programme und Dokumente. Home Premium bietet Ihnen das beste Unterhaltungserlebnis und macht es einfach, Ihre Lieblingsfernsehsendungen, Fotos, Videos und Musik zu genießen und zu teilen. Die Ultimate Edition integriert alle Funktionen jeder Edition und verfügt über alle Unterhaltungsfunktionen und professionellen Features von Windows 7 Home Premium.

Beherrschen Sie die Schlüsselkonzepte von Spring MVC: Verstehen Sie diese wichtigen Funktionen Beherrschen Sie die Schlüsselkonzepte von Spring MVC: Verstehen Sie diese wichtigen Funktionen Dec 29, 2023 am 09:14 AM

Verstehen Sie die Hauptfunktionen von SpringMVC: Um diese wichtigen Konzepte zu beherrschen, sind spezifische Codebeispiele erforderlich. SpringMVC ist ein Java-basiertes Framework für die Entwicklung von Webanwendungen, das Entwicklern beim Aufbau flexibler und skalierbarer Strukturen durch das Architekturmuster Model-View-Controller (MVC) hilft. Internetanwendung. Wenn wir die wichtigsten Funktionen von SpringMVC verstehen und beherrschen, können wir unsere Webanwendungen effizienter entwickeln und verwalten. In diesem Artikel werden einige wichtige Konzepte von SpringMVC vorgestellt

Wählen Sie je nach Bedarf und Funktionen die passende Go-Version Wählen Sie je nach Bedarf und Funktionen die passende Go-Version Jan 20, 2024 am 09:28 AM

Mit der rasanten Entwicklung des Internets werden Programmiersprachen ständig weiterentwickelt und aktualisiert. Unter ihnen hat die Go-Sprache als Open-Source-Programmiersprache in den letzten Jahren große Aufmerksamkeit erregt. Die Go-Sprache ist so konzipiert, dass sie einfach, effizient, sicher und leicht zu entwickeln und bereitzustellen ist. Es zeichnet sich durch hohe Parallelität, schnelle Kompilierung und Speichersicherheit aus und wird daher häufig in Bereichen wie Webentwicklung, Cloud Computing und Big Data eingesetzt. Derzeit sind jedoch verschiedene Versionen der Go-Sprache verfügbar. Bei der Auswahl einer geeigneten Go-Sprachversion müssen wir sowohl Anforderungen als auch Funktionen berücksichtigen. Kopf

Was sind die drei Merkmale von 5g? Was sind die drei Merkmale von 5g? Dec 09, 2020 am 10:55 AM

Die drei Merkmale von 5g sind: 1. Hohe Geschwindigkeit; in praktischen Anwendungen ist die Geschwindigkeit des 5G-Netzwerks mehr als zehnmal so hoch wie die des 4G-Netzwerks. 2. Geringe Latenz: Die Latenz des 5G-Netzwerks beträgt etwa zehn Millisekunden und ist damit schneller als die menschliche Reaktionsgeschwindigkeit. 3. Breite Verbindung; die Entstehung des 5G-Netzwerks wird in Kombination mit anderen Technologien eine neue Szene des Internet of Everything schaffen.

Gibt es in Golang klassenähnliche objektorientierte Funktionen? Gibt es in Golang klassenähnliche objektorientierte Funktionen? Mar 19, 2024 pm 02:51 PM

In Golang (Go-Sprache) gibt es kein Konzept einer Klasse im herkömmlichen Sinne, es stellt jedoch einen Datentyp namens Struktur bereit, durch den objektorientierte Funktionen ähnlich wie Klassen erreicht werden können. In diesem Artikel erklären wir, wie Strukturen zur Implementierung objektorientierter Funktionen verwendet werden, und stellen konkrete Codebeispiele bereit. Definition und Verwendung von Strukturen Werfen wir zunächst einen Blick auf die Definition und Verwendung von Strukturen. In Golang können Strukturen über das Schlüsselwort type definiert und dann bei Bedarf verwendet werden. Strukturen können Attribute enthalten

C++-Funktionstypen und -merkmale C++-Funktionstypen und -merkmale Apr 11, 2024 pm 03:30 PM

C++-Funktionen haben die folgenden Typen: einfache Funktionen, konstante Funktionen, statische Funktionen und virtuelle Funktionen; zu den Funktionen gehören: Inline-Funktionen, Standardparameter, Referenzrückgaben und überladene Funktionen. Beispielsweise verwendet die Funktion „calculeArea“ π, um die Fläche eines Kreises mit einem bestimmten Radius zu berechnen und gibt sie als Ausgabe zurück.

Was sind die Merkmale von Java? Was sind die Merkmale von Java? Aug 09, 2023 pm 03:05 PM

Die Merkmale von Java sind: 1. Einfach und leicht zu erlernen; 2. Objektorientiert, wodurch der Code wiederverwendbar und wartbar wird; 3. Plattformunabhängig, auf verschiedenen Betriebssystemen lauffähig; 4. Speicherverwaltung durch automatische Müllabfuhr; Sammelmechanismus: Speicher verwalten; 5. Starke Typprüfung, Variablen müssen ihren Typ vor der Verwendung deklarieren; 6. Sicherheit, die den unbefugten Zugriff und die Ausführung von Schadcode verhindern kann; Programm; 8. Ausnahmebehandlung kann Programmabstürze vermeiden; 9. Eine große Anzahl von Entwicklungsbibliotheken und Frameworks; 10. Open-Source-Ökosystem;

Beherrschen Sie die wichtigsten Funktionen und Anwendungsszenarien der Golang-Middleware Beherrschen Sie die wichtigsten Funktionen und Anwendungsszenarien der Golang-Middleware Mar 20, 2024 pm 06:33 PM

Als schnelle und effiziente Programmiersprache wird Golang auch häufig im Bereich der Webentwicklung eingesetzt. Unter anderem kann Middleware als wichtiges Entwurfsmuster Entwicklern dabei helfen, Code besser zu organisieren und zu verwalten sowie die Wiederverwendbarkeit und Wartbarkeit von Code zu verbessern. In diesem Artikel werden die wichtigsten Funktionen und Anwendungsszenarien der Middleware in Golang vorgestellt und ihre Verwendung anhand spezifischer Codebeispiele veranschaulicht. 1. Das Konzept und die Funktion von Middleware. Als Plug-In-Komponente wird Middleware in der Anforderungs-Antwort-Verarbeitungskette der Anwendung eingesetzt

See all articles