Heim > Java > javaLernprogramm > Hauptteil

Einführung in die Verwendung von Funktionsreferenzen in Java8

黄舟
Freigeben: 2017-09-19 10:27:02
Original
1563 Leute haben es durchsucht

Dieser Artikel führt Sie hauptsächlich in die Verwendung von Funktionsreferenzen im Java8-Lern-Tutorial ein. Der Artikel stellt es ausführlich anhand von Beispielcode vor. Es hat einen gewissen Referenz-Lernwert für alle, die es benötigen Lasst uns gemeinsam lernen.

Vorwort

Im vorherigen Artikel haben wir anhand von Beispielen erklärt, wie Lambda-Ausdrücke definiert und verwendet werden, und im Vergleich zu anderen Sprachen A spezielle Spezifikation von Lambda-Ausdrücken in Java. Und erwähnt: Lambda-Ausdrücke können weiter zu Funktionsreferenzen vereinfacht werden.

In diesem Artikel wird die Verwendung von Funktionsreferenzen vorgestellt. Es gibt nicht viel zu sagen, werfen wir einen Blick auf die ausführliche Einführung.

Typen von Funktionsreferenzen

Funktionsreferenzen werden in die folgenden vier Typen unterteilt:

  • Statische Funktionen wie die parseInt-Funktion der Integer-Klasse können als Integer::parseInt

  • Referenzen auf Funktionen auf Objektebene wie die Längenfunktion geschrieben werden der String-Klasse kann als String::length

  • ein Verweis auf eine Funktion einer bestimmten Instanz geschrieben werden, z. B. getValue einer Instanz mit dem Namen teuerTransaction, geschrieben als expensiveTransaction::getValue

  • Ein Verweis auf einen Konstruktor

Statische Funktion

Zum Beispiel:


Function<String, Integer> stringToInteger = (String s) -> Integer.parseInt(s);
Nach dem Login kopieren

Kann geschrieben werden als:


Function<String, Integer> stringToInteger = Integer::parseInt;
Nach dem Login kopieren

Ein Verweis auf Eine Funktion auf Objektebene


BiPredicate<List<String>, String> contains =
(list, element) -> list.contains(element);
Nach dem Login kopieren

kann wie folgt geschrieben werden:


BiPredicate<List<String>, String> contains = List::contains;
Nach dem Login kopieren

Konstruktorreferenz

unten Um ein weiteres Beispiel für einen Konstruktor zu geben, definieren Sie zunächst eine funktionale Schnittstelle, und die einzige Methode get gibt ein Objekt des angegebenen Typs zurück.


@FunctionalInterface
public interface Supplier<T> {
 T get();
}
Nach dem Login kopieren


Supplier<TantanitReader> constructor = () -> new TantanitReader();
TantanitReader tantanitReader = constructor.get();
Nach dem Login kopieren

Der Lambda-Ausdruck des obigen Codes ist neu und gibt ein neues Objekt zurück, wodurch die Konstruktorvariable a wird Konstruktorreferenz auf das Gerät.

entspricht der folgenden Funktionsreferenz:


Supplier<TantanitReader> constructor2 = TantanitReader::new;
TantanitReader tantanitReader2 = constructor2.get();
Nach dem Login kopieren

Die obigen Beispiele sind alle ohne Parameter. Im Folgenden wird der Konstruktor weiterhin als Beispiel verwendet Einführen Wenn es Parameter gibt:


public TantanitReader(String loginName) {
 this.loginName = loginName;
}
Nach dem Login kopieren


Function<String,TantanitReader> constructor3 = (loginName) -> new TantanitReader(loginName);
TantanitReader tantanitReader3 = constructor3.apply("jack");

Function<String,TantanitReader> constructor4 = TantanitReader::new;
TantanitReader tantanitReader4 = constructor4.apply("jack");
TantanitReader tantanitReader5 = constructor4.apply("tom");
Nach dem Login kopieren

Da die Funktion zu diesem Zeitpunkt nur einen Parameter hat, können Sie dies tun Verwenden Sie Javas eigene Funktion. Diese Funktionsschnittstelle hat folgende tatsächliche Funktionen:


R apply(T t);
Nach dem Login kopieren

Funktionen zum Zurückgeben eines Ergebnisses basierend auf einem Parameter. Daraus können wir Konstruktor4 und die entsprechende Funktionsreferenz Konstruktor5 verwenden.

Zusammenfassung

Die Verwendung von Funktionsreferenzen kann nicht nur Lambda-Ausdrücke vereinfachen, sondern sich auch semantisch stärker auf den Methodennamen konzentrieren, d. h. darauf, was zu tun ist und was Die Abstraktionsebene kommt der menschlichen Wahrnehmung näher. Daher sollten nach Möglichkeit Funktionsreferenzen verwendet werden.

Zusammenfassung

Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung von Funktionsreferenzen in Java8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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!