Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Metodreferens i Java | Avancerade Java-Funktioner och Tekniker
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Java Datastrukturer

bookMetodreferens i Java

Innan vi går vidare till praktiska övningar med Stream API, bör vi utforska några genvägar för lambda-uttryck. Programmerare kallar dessa "genvägar" för syntaktiskt socker.

I detta kapitel kommer vi att diskutera metodreferenser och hur de kan användas som ersättare för lambda-uttryck.

Metodreferenser

Låt oss titta på ett enkelt exempel på ett lambda-uttryck och försöka ersätta det med en metodreferens:

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)); } }

Att använda två lambda-uttryck ser inte särskilt elegant ut, särskilt när du kan förkorta dem till metodreferenser från de klasser där de är deklarerade.

Syntaxen kommer att se ut så här:

Example.java

Example.java

copy
1
(Class::Method)

Låt oss förbättra ovanstående kod med hjälp av metodreferenser:

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); } }

toUpperCase-metoden är en del av String-klassen, så vi använder konstruktionen String::toUpperCase. Observera att när du använder en metodreferens kommer operationen att tillämpas på varje element, så det finns inget behov av att använda ett lambda-uttryck för detta. Vi har även ersatt utskriften till skärmen med System.out::print, vilket också är en metodreferens. Programmet kommer att tillämpa metoden System.out.print() på varje element.

För övrigt föreslår IntelliJ IDEA ofta att ersätta lambda-uttryck med metodreferenser om en sådan operation är möjlig, så du behöver inte memorera syntaxen varje gång.

På detta sätt kommer IntelliJ IDEA själv att föreslå förbättringar av din kod genom att använda metodreferenser.

Sammanfattning

Sammanfattningsvis tillför metodreferenser ingen programmatisk belastning. De optimerar inte processen men gör den inte heller mer komplicerad. Denna konstruktion är helt enkelt för att minska mängden skriven kod något och förbättra läsbarheten. Om du vill använda lambda-uttryck eller metodreferenser är upp till dig. Till exempel tycker jag att det är tydligare att skriva ett lambda-uttryck, och sedan kommer IntelliJ automatiskt att ersätta det med en metodreferens.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 4

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

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?

bookMetodreferens i Java

Svep för att visa menyn

Innan vi går vidare till praktiska övningar med Stream API, bör vi utforska några genvägar för lambda-uttryck. Programmerare kallar dessa "genvägar" för syntaktiskt socker.

I detta kapitel kommer vi att diskutera metodreferenser och hur de kan användas som ersättare för lambda-uttryck.

Metodreferenser

Låt oss titta på ett enkelt exempel på ett lambda-uttryck och försöka ersätta det med en metodreferens:

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)); } }

Att använda två lambda-uttryck ser inte särskilt elegant ut, särskilt när du kan förkorta dem till metodreferenser från de klasser där de är deklarerade.

Syntaxen kommer att se ut så här:

Example.java

Example.java

copy
1
(Class::Method)

Låt oss förbättra ovanstående kod med hjälp av metodreferenser:

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); } }

toUpperCase-metoden är en del av String-klassen, så vi använder konstruktionen String::toUpperCase. Observera att när du använder en metodreferens kommer operationen att tillämpas på varje element, så det finns inget behov av att använda ett lambda-uttryck för detta. Vi har även ersatt utskriften till skärmen med System.out::print, vilket också är en metodreferens. Programmet kommer att tillämpa metoden System.out.print() på varje element.

För övrigt föreslår IntelliJ IDEA ofta att ersätta lambda-uttryck med metodreferenser om en sådan operation är möjlig, så du behöver inte memorera syntaxen varje gång.

På detta sätt kommer IntelliJ IDEA själv att föreslå förbättringar av din kod genom att använda metodreferenser.

Sammanfattning

Sammanfattningsvis tillför metodreferenser ingen programmatisk belastning. De optimerar inte processen men gör den inte heller mer komplicerad. Denna konstruktion är helt enkelt för att minska mängden skriven kod något och förbättra läsbarheten. Om du vill använda lambda-uttryck eller metodreferenser är upp till dig. Till exempel tycker jag att det är tydligare att skriva ett lambda-uttryck, och sedan kommer IntelliJ automatiskt att ersätta det med en metodreferens.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 4
some-alt