Detaillierte Einführung in neue Funktionen von JDK8
Funktionale 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
// 匿名内部类对象 Runnable task = new Runnable() { @Override public void run() { System.out.println("乌鸦坐飞机"); } }; 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("龙卷风摧毁停车场")).start();
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); }
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(); }
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"); }
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开始,接口当中允许定义default默认方法 * 修饰符:public default(public可以省略,default不能省略) */ public interface MyInterface { void method1(); void method2(); default void methodNew() { System.out.println("接口默认方法执行"); } }
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("测试数据1"); list.add("测试数据2"); list.add("测试数据3"); list.add("测试数据12"); //使用λ表达式遍历集合 list.forEach(s -> System.out.println(s)); //结合Predicate使用和过滤条件筛选元素 Predicate<String> contain1 = n -> n.contains("1"); Predicate<String> contain2 = n -> n.contains("2"); //根据条件遍历集合 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相关文章:java零基础入门
欢迎大家一起来学习!
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

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



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

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

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.

[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

Ü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

Die in PHP8.1 eingeführte neue Redis-Erweiterung Mit der rasanten Entwicklung des Internets müssen große Datenmengen gespeichert und verarbeitet werden. Um die Effizienz und Leistung der Datenverarbeitung zu verbessern, ist Caching zu einem unverzichtbaren Bestandteil geworden. In der PHP-Entwicklung wird Redis als leistungsstarkes Schlüsselwertspeichersystem häufig in Caching- und Datenspeicherszenarien eingesetzt. Um die Erfahrung bei der Verwendung von Redis in PHP weiter zu verbessern, führt PHP8.1 eine neue Redis-Erweiterung ein. In diesem Artikel werden die neuen Funktionen dieser Erweiterung vorgestellt und bereitgestellt

Die neuen Funktionen der Go-Sprache sind: 1. Go-Modul, das zum Verwalten der Abhängigkeiten von Go-Sprachprojekten verwendet wird. 2. Fehlerbehandlung, Hinzufügen eines neuen Fehlertyps, wodurch die Fehlerbehandlung flexibler und präziser wird. 3. Kontextpaket, verwendet zum Übertragen von Anforderungsbereichswerten zwischen Goroutinen; 4. Einbettung, das heißt, eine Struktur kann in eine andere Struktur eingebettet werden. 5. Synchronisierungspaket, um die Synchronisation und Kommunikation zwischen Goroutinen besser zu steuern 7. Generika ermöglichen es Entwicklern, flexibler zu schreiben.

Ü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
