Methodenreferenz in Java
Bevor wir mit der Praxis der Stream-API beginnen, sollten wir einige Abkürzungen für Lambda-Ausdrücke betrachten. Programmierer bezeichnen diese "Abkürzungen" als syntaktischen Zucker.
In diesem Kapitel werden Methodenreferenzen behandelt und deren Verwendung als Ersatz für Lambda-Ausdrücke erläutert.
Methodenreferenzen
Betrachten wir ein einfaches Beispiel für einen Lambda-Ausdruck und versuchen, diesen durch eine Methodenreferenz zu ersetzen:
Main.java
1234567891011package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> example = Arrays.asList("c", "o", "d", "e", "f", "i", "n", "i", "t", "y"); example.stream().map(e -> e.toUpperCase()).forEach(e -> System.out.print(e)); } }
Die Verwendung von zwei Lambda-Ausdrücken wirkt nicht besonders elegant, insbesondere wenn sie durch Methodenreferenzen aus den Klassen, in denen sie deklariert sind, abgekürzt werden können.
Die Syntax sieht folgendermaßen aus:
Example.java
1(Class::Method)
Verbesserung des obigen Codes durch Methodenreferenzen:
Main.java
1234567891011package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> example = Arrays.asList("c", "o", "d", "e", "f", "i", "n", "i", "t", "y"); example.stream().map(String::toUpperCase).forEach(System.out::print); } }
Die Methode toUpperCase ist Teil der Klasse String, daher wird die Konstruktion String::toUpperCase verwendet. Beachte, dass bei der Verwendung einer Methodenreferenz die Operation auf jedes Element angewendet wird, sodass kein Lambda-Ausdruck mehr erforderlich ist. Außerdem wurde die Bildschirmausgabe durch System.out::print ersetzt, was ebenfalls eine Methodenreferenz ist. Das Programm wendet die Methode System.out.print() auf jedes Element an.
Übrigens schlägt IntelliJ IDEA selbst regelmäßig vor, Lambda-Ausdrücke durch Methodenreferenzen zu ersetzen, sofern dies möglich ist. Daher muss die Syntax nicht jedes Mal auswendig gelernt werden.
Auf diese Weise wird IntelliJ IDEA selbst vorschlagen, Ihren Code mithilfe von Methodenreferenzen zu verbessern.
Zusammenfassung
Zusammenfassend lässt sich sagen, dass Methodenreferenzen keine zusätzliche Programmierlast verursachen. Sie optimieren den Prozess nicht, erschweren ihn aber auch nicht. Diese Konstruktion dient lediglich dazu, den geschriebenen Code etwas zu reduzieren und die Lesbarkeit zu verbessern. Ob Sie Lambda-Ausdrücke oder Methodenreferenzen verwenden, liegt bei Ihnen. Zum Beispiel finde ich es übersichtlicher, einen Lambda-Ausdruck zu schreiben, und dann ersetzt IntelliJ diesen automatisch durch eine Methodenreferenz.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you show more examples of method references?
What are the different types of method references in Java?
When should I use a method reference instead of a lambda expression?
Großartig!
Completion Rate verbessert auf 4
Methodenreferenz in Java
Swipe um das Menü anzuzeigen
Bevor wir mit der Praxis der Stream-API beginnen, sollten wir einige Abkürzungen für Lambda-Ausdrücke betrachten. Programmierer bezeichnen diese "Abkürzungen" als syntaktischen Zucker.
In diesem Kapitel werden Methodenreferenzen behandelt und deren Verwendung als Ersatz für Lambda-Ausdrücke erläutert.
Methodenreferenzen
Betrachten wir ein einfaches Beispiel für einen Lambda-Ausdruck und versuchen, diesen durch eine Methodenreferenz zu ersetzen:
Main.java
1234567891011package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> example = Arrays.asList("c", "o", "d", "e", "f", "i", "n", "i", "t", "y"); example.stream().map(e -> e.toUpperCase()).forEach(e -> System.out.print(e)); } }
Die Verwendung von zwei Lambda-Ausdrücken wirkt nicht besonders elegant, insbesondere wenn sie durch Methodenreferenzen aus den Klassen, in denen sie deklariert sind, abgekürzt werden können.
Die Syntax sieht folgendermaßen aus:
Example.java
1(Class::Method)
Verbesserung des obigen Codes durch Methodenreferenzen:
Main.java
1234567891011package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> example = Arrays.asList("c", "o", "d", "e", "f", "i", "n", "i", "t", "y"); example.stream().map(String::toUpperCase).forEach(System.out::print); } }
Die Methode toUpperCase ist Teil der Klasse String, daher wird die Konstruktion String::toUpperCase verwendet. Beachte, dass bei der Verwendung einer Methodenreferenz die Operation auf jedes Element angewendet wird, sodass kein Lambda-Ausdruck mehr erforderlich ist. Außerdem wurde die Bildschirmausgabe durch System.out::print ersetzt, was ebenfalls eine Methodenreferenz ist. Das Programm wendet die Methode System.out.print() auf jedes Element an.
Übrigens schlägt IntelliJ IDEA selbst regelmäßig vor, Lambda-Ausdrücke durch Methodenreferenzen zu ersetzen, sofern dies möglich ist. Daher muss die Syntax nicht jedes Mal auswendig gelernt werden.
Auf diese Weise wird IntelliJ IDEA selbst vorschlagen, Ihren Code mithilfe von Methodenreferenzen zu verbessern.
Zusammenfassung
Zusammenfassend lässt sich sagen, dass Methodenreferenzen keine zusätzliche Programmierlast verursachen. Sie optimieren den Prozess nicht, erschweren ihn aber auch nicht. Diese Konstruktion dient lediglich dazu, den geschriebenen Code etwas zu reduzieren und die Lesbarkeit zu verbessern. Ob Sie Lambda-Ausdrücke oder Methodenreferenzen verwenden, liegt bei Ihnen. Zum Beispiel finde ich es übersichtlicher, einen Lambda-Ausdruck zu schreiben, und dann ersetzt IntelliJ diesen automatisch durch eine Methodenreferenz.
Danke für Ihr Feedback!