Detaillierte Einführung in neue Funktionen von JDK8
Nov 26, 2019 pm 01:45 PMFunktionale Programmierung
Objektorientiert betont, dass ?alles ein Objekt ist“, wenn man etwas tun m?chte damit man es machen kann. Beim funktionalen Programmierdenken geht es eher darum, ?was zu tun ist“ als darum, ?wie es zu tun ist“.
Gew?hnlicher Er?ffnungsthread
// 匿名內(nèi)部類對象 Runnable task = new Runnable() { @Override public void run() { System.out.println("烏鴉坐飛機(jī)"); } }; new Thread(task).start();
Weitere kostenlose Java-Video-Tutorials: Java-Online-Tutorial
Funktion ?ffnen Sie a Thread mit Programmierung
rrreeDie Klammern davor: Methodenparameter Wenn keine Parameter vorhanden sind, zeigt der Pfeil an, was sp?ter getan werden soll K?rperstütze, die das spezifische Was zu tun darstellt.
Lambda-Ausdruck
Der Lambda-Ausdruck, auch als Abschluss bekannt, ist die wichtigste neue Funktion, die die Ver?ffentlichung von Java 8 vorantreibt.
Lambda erm?glicht die übergabe von Funktionen als Parameter einer Methode (Funktionen werden als Parameter an Methoden übergeben). Die Verwendung von Lambda-Ausdrücken kann den Code pr?gnanter und kompakter machen.
Drei Elemente: Parameter, Pfeile, Code
Format: (Parametertyp-Parametername) -> Lambda-Ausdruck verwenden Die Pr?misse der Formel: Es muss eine Schnittstelle geben und es darf nur eine abstrakte Methode in der Schnittstelle geben
Demonstration: Schreiben Sie eine Cook-Schnittstelle, und es gibt eine makeFood()-Methode in der Schnittstelle
new Thread(() -> System.out.println("龍卷風(fēng)摧毀停車場")).start();Lambda-Ausdruck Formel-Auslassungsregeln:
Der Parametertyp kann weggelassen werden. Sie k?nnen jedoch nur die Typen aller Parameter gleichzeitig weglassen oder sie überhaupt nicht weglassen. Wenn es einen und nur einen Parameter gibt, k?nnen die Klammern weggelassen werden. Wenn es eine und nur eine Anweisung in den geschweiften Klammern gibt. Unabh?ngig davon, ob ein Rückgabewert vorhanden ist, k?nnen Rückgabe, geschweifte Klammern und Semikolons weggelassen werden.
public static void main(String[] args) { method(() -> { System.out.println("閃刀啟動!"); }); } private static void method(Cook cook) { cook.makeFood(); }
Wenn eine Schnittstelle neu ist, k?nnen Sie auch Lambda-Ausdrücke anstelle anonymer innerer Klassen verwenden
public static void main(String[] args) { method((a, b)-> a + b); } private static void method(Calculator calculator) { int result = calculator.sum(1234, 9876); System.out.println(result); }Funktionale Schnittstelle
Die Schnittstelle hat und Es gibt nur eine abstrakte Methode, eine sogenannte funktionale Schnittstelle.
Es gibt eine neue Annotation
in JDK8, die verwendet wird, um zu erkennen, ob eine Schnittstelle eine funktionale Schnittstelle ist. Handelt es sich nicht um eine funktionsf?hige Schnittstelle, wird beim Kompilieren ein Fehler gemeldet. Die Annotation @FunctionalInerface ist optional, auch wenn diese Annotation nicht verwendet wird, solange die Schnittstelle die Definitionsanforderungen einer funktionalen Schnittstelle erfüllt.Runnable task = () -> System.out.println("閃刀啟動!"); new Thread(task).start();
@FunctionalInterface
MethodenreferenzDieser Code kann tats?chlich abgekürzt werden.
Printer printer = (str) -> System.out.println(str);
Solange es ableitbar ist, ist es referenzierbar, sodass die übergabe von Parametern eigentlich keinen Sinn ergibt. Hier k?nnen Sie also tats?chlich Methodenreferenzen zum Abkürzen verwenden
System.out::println
Ab Java8, a Der Ausdruck im neuen Operator, der Methodenreferenzoperator (zwei nacheinander geschriebene Doppelpunkte), ist eine Methodenreferenz und Lambda. Das Wesentliche von Methodenreferenz und Lambda ist genau das Gleiche, und der Zweck besteht darin, das Schreiben von Lambda-Ausdrücken zu vereinfachen.
Lambda-Schreibmethode:
s->System.out.println(s)
Methodenreferenz-Schreibmethode:
System.out::println
Die beiden Schreibmethoden sind v?llig gleichwertig
@FunctionalInterface public interface MyInterface { void method(); }Schnittstelle
Standardmethode
Die Schnittstelle hatte ursprünglich zwei abstrakte Methoden, muss aber jetzt in drei abstrakte Methoden umgewandelt werden Die Klasse muss auch eine neue Methode implementieren.
Wenn zu viele Implementierungsklassen vorhanden sind, ist die Bedienung sehr problematisch. Das JDK verwendete früher den Open-Close-Designmodus: offen für Erweiterungen und geschlossen für ?nderungen. Das hei?t: Erstellen Sie eine neue Schnittstelle, erben Sie die ursprüngliche Schnittstelle und definieren Sie neue Methoden. In diesem Fall verfügen die ursprünglichen Implementierungsklassen jedoch nicht über neue Methoden. Zu diesem Zeitpunkt kann die Standardmethode der Schnittstelle verwendet werden.
Das Schlüsselwort wird standardm??ig ge?ndert und die Methode erfordert einen Methodenk?rper. Alle Unterklassen einer solchen Methode werden standardm??ig implementiert (Sie müssen sie nicht selbst schreiben, Sie k?nnen sie auch in der Implementierungsklasse überschreiben
public static void main(String[] args) { method(System.out::println); } private static void method(Printer printer) { printer.print("hello"); }Hinweis). : Die Standardmethode in der Schnittstelle ist ?quivalent. Ein neues Schlüsselwort und der ?Standard“ der vier Modifikatoren sind also nicht dasselbe Konzept.
Durch die Verwendung des Standardschlüsselworts kann das Programm den Effekt einer ?Mehrfachvererbung“ erzielen.
statische MethodeAb Java8 dürfen statische Methoden in Schnittstellen definiert werden, und ihre Verwendung ist die gleiche wie statische Methoden allgemeiner Klassen.
/** * 從java8開始,接口當(dāng)中允許定義default默認(rèn)方法 * 修飾符:public default(public可以省略,default不能省略) */ public interface MyInterface { void method1(); void method2(); default void methodNew() { System.out.println("接口默認(rèn)方法執(zhí)行"); } }Streaming-Vorgang
Der erste Eindruck, den die Streaming-Verarbeitung vermittelt, ist, dass sie den Erfassungsvorgang erheblich vereinfacht Der Vorgang kann mit Hilfe der Streaming-Verarbeitung in einer Zeile implementiert werden.
Wenn wir beispielsweise alle geraden Zahlen aus einer Sammlung mit Ganzzahlen herausfiltern und sie zur Rückgabe in eine neue Liste einkapseln m?chten, müssen wir dies vor Java8 durch den folgenden Code implementieren:
Für eine Sammlung von Nums:
public interface Animal { void eat(); static Animal getAnimal() { return new Cat(); } }
Durch die Streaming-Verarbeitung von Java8 k?nnen wir den Code wie folgt vereinfachen:
List<Integer> evens = new ArrayList<>(); for (final Integer num : nums) { if (num % 2 == 0) { evens.add(num); } }
Lassen Sie uns kurz die Bedeutung der obigen Anweisungszeile stream() erkl?ren Operation Wandeln Sie die Sammlung in einen Stream um, filter() führt unseren benutzerdefinierten Filterprozess aus, hier filtern wir alle geraden Zahlen durch Lambda-Ausdrücke heraus, und schlie?lich kapseln wir die Ergebnisse durch Collect() und spezifizieren sie durch Collectors.toList() Eingekapselt in a Listenabholung und Rückgabe.
常用操作案例:
//初始化list集合 List<String> list = new ArrayList<String>(); list.add("測試數(shù)據(jù)1"); list.add("測試數(shù)據(jù)2"); list.add("測試數(shù)據(jù)3"); list.add("測試數(shù)據(jù)12"); //使用λ表達(dá)式遍歷集合 list.forEach(s -> System.out.println(s)); //結(jié)合Predicate使用和過濾條件篩選元素 Predicate<String> contain1 = n -> n.contains("1"); Predicate<String> contain2 = n -> n.contains("2"); //根據(jù)條件遍歷集合 list.stream().filter(contain1).forEach(n -> System.out.println(n)); list.stream().filter(s -> contain1.test(s)).forEach(s -> System.out.println(s)); list.stream().filter(contain1.and(contain2)).forEach(n -> System.out.println(n)); list.stream().filter(contain1.or(contain2)).forEach(n -> System.out.println(n)); //將過濾后的元素重新放到一個集合中 List<String> newList = list.stream().filter(contain1.and(contain2)).collect(Collectors.toList()); 集合中decimal求和 BigDecimal sum = list .stream() .map(Person::getAmount) .reduce(BigDecimal::add) .get(); //排序 , 也需要新的集合接收 List<Student> resultList = new ArrayList<Student>(); resultList = list.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList())
推薦java相關(guān)文章:java零基礎(chǔ)入門
歡迎大家一起來學(xué)習(xí)!
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in neue Funktionen von JDK8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

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

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

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

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)

Zu den neuen Funktionen von PHP8 geh?ren JIT-Compiler, Typableitung, benannte Parameter, Union-Typen, Eigenschaften, Verbesserungen bei der Fehlerbehandlung, Unterstützung für asynchrone Programmierung, neue Standardbibliotheksfunktionen und anonyme Klassenerweiterungen. Detaillierte Einführung: 1. JIT-Compiler, PHP8 führt den JIT-Compiler ein, der eine wichtige Leistungsverbesserung darstellt. Der JIT-Compiler kann einige hochfrequente Ausführungscodes in Echtzeit kompilieren und optimieren, wodurch die Ausführungsgeschwindigkeit verbessert wird führt die Typinferenzfunktion ein, die es Entwicklern erm?glicht, beim Deklarieren von Variablen usw. automatisch den Typ von Variablen abzuleiten.

Eine ausführliche Analyse der neuen Funktionen von PHP8, um Ihnen zu helfen, die neueste Technologie zu beherrschen. Im Laufe der Zeit hat sich die Programmiersprache PHP st?ndig weiterentwickelt und verbessert. Die kürzlich ver?ffentlichte PHP8-Version bietet Entwicklern viele spannende neue Funktionen und Verbesserungen, die unsere Entwicklungsarbeit komfortabler und effizienter machen. In diesem Artikel analysieren wir die neuen Funktionen von PHP8 eingehend und stellen spezifische Codebeispiele bereit, die Ihnen helfen, diese neuesten Technologien besser zu beherrschen. Der JIT-Compiler PHP8 führt die JIT-Kompilierung (Just-In-Time) ein

PHP8.3 ver?ffentlicht: überblick über neue Funktionen Da sich die Technologie weiterentwickelt und sich ?ndern muss, werden Programmiersprachen st?ndig aktualisiert und verbessert. PHP ist eine in der Webentwicklung weit verbreitete Skriptsprache und wurde st?ndig verbessert, um Entwicklern leistungsf?higere und effizientere Tools zur Verfügung zu stellen. Die kürzlich ver?ffentlichte PHP 8.3-Version bringt viele lang erwartete neue Funktionen und Verbesserungen. Werfen wir einen Blick auf einen überblick über diese neuen Funktionen. Initialisierung von Nicht-Null-Eigenschaften Wenn in früheren Versionen von PHP einer Klasseneigenschaft nicht explizit ein Wert zugewiesen wurde, ist es ihr Wert

[Interpretation neuer Funktionen der Go-Sprache: Um die Programmierung effizienter zu gestalten, sind spezifische Codebeispiele erforderlich.] In den letzten Jahren hat die Go-Sprache im Bereich der Softwareentwicklung gro?e Aufmerksamkeit auf sich gezogen, und ihr einfaches und effizientes Designkonzept hat immer mehr Aufmerksamkeit erregt Entwickler. Als statisch typisierte Programmiersprache führt die Go-Sprache weiterhin neue Funktionen ein, um die Entwicklungseffizienz zu verbessern und den Code-Schreibprozess zu vereinfachen. In diesem Artikel werden die neuesten Funktionen der Go-Sprache ausführlich erl?utert und anhand spezifischer Codebeispiele erl?utert, wie Sie den Komfort dieser neuen Funktionen erleben k?nnen. Modulare Entwicklung (GoModules) Go-Sprache ab 1

Die neuen Funktionen von es6 sind: 1. Bereich auf Blockebene, in dem Variablen im Bereich auf Blockebene deklariert werden k?nnen. 2. Pfeilfunktion, eine neue Art der Funktionsdeklaration. 3. Destrukturierende Zuweisung, eine M?glichkeit, Werte daraus zu extrahieren ein Array oder Objekt und weisen Sie einer Variablen einen Wert zu; 4. Standardparameter, die die Bereitstellung von Standardwerten für Parameter beim Definieren von Funktionen erm?glichen; 5. Erweiterungsoperatoren, die Arrays oder Objekte erweitern und Elemente extrahieren k?nnen; 7. Klassen und Module 8. Iteratoren und Generatoren 10. Modularer Import und Export;

übersicht über die neuen Funktionen von CSS3: So erzielen Sie mit CSS3 übergangseffekte. CSS3 ist die neueste Version von CSS. Unter den vielen neuen Funktionen dürfte der übergangseffekt die interessanteste und praktischste sein. übergangseffekte k?nnen unsere Seiten w?hrend der Interaktion flüssiger und sch?ner machen und den Benutzern ein gutes visuelles Erlebnis bieten. In diesem Artikel wird die grundlegende Verwendung von CSS3-übergangseffekten mit entsprechenden Codebeispielen vorgestellt. Attribut ?transition-property“: Geben Sie den CSS-Eigenschaftsübergangseffekt an, der überführt werden muss

überblick über die neuen Funktionen von CSS3: So wenden Sie CSS3-Animationseffekte an Einführung: Mit der Entwicklung des Internets hat CSS3 nach und nach CSS2 als die am h?ufigsten verwendete Stilsprache in der Front-End-Entwicklung abgel?st. CSS3 bietet viele neue Funktionen, die beliebteste davon sind Animationseffekte. Durch die Verwendung von CSS3-Animationen k?nnen Sie Webseiten atemberaubende interaktive Effekte hinzufügen und das Benutzererlebnis verbessern. In diesem Artikel werden einige h?ufig verwendete Animationsfunktionen von CSS3 vorgestellt und relevante Codebeispiele bereitgestellt. 1. TransitionAnimat

überblick über die neuen Funktionen von CSS3: So verwenden Sie CSS3, um ein horizontal zentriertes Layout zu erreichen. Bei Webdesign und -layout ist ein horizontal zentriertes Layout eine h?ufige Anforderung. In der Vergangenheit haben wir dazu oft komplexe JavaScript- oder CSS-Tricks eingesetzt. Mit CSS3 wurden jedoch einige neue Funktionen eingeführt, die horizontal zentrierte Layouts einfacher und flexibler machen. In diesem Artikel werden einige neue Funktionen von CSS3 vorgestellt und einige Codebeispiele bereitgestellt, um zu veranschaulichen, wie Sie mit CSS3 ein horizontal zentriertes Layout erreichen. 1. Verwenden Sie Flexbox zum Layouten der Datei
