Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Methodenreferenz in Java | Erweiterte Java-Funktionen und -Techniken
Java Datenstrukturen

bookMethodenreferenz 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

Main.java

copy
1234567891011
package 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

Example.java

copy
1
(Class::Method)

Verbesserung des obigen Codes durch Methodenreferenzen:

Main.java

Main.java

copy
1234567891011
package 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.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 4

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

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?

bookMethodenreferenz 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

Main.java

copy
1234567891011
package 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

Example.java

copy
1
(Class::Method)

Verbesserung des obigen Codes durch Methodenreferenzen:

Main.java

Main.java

copy
1234567891011
package 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.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 4
some-alt