Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Metodereferanse i Java | Avanserte Java-funksjoner og -teknikker
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Java Datastrukturer

bookMetodereferanse i Java

Før vi går videre til praksis med Stream API, bør vi utforske noen snarveier for lambda-uttrykk. Programmerere omtaler disse "snarveiene" som syntaktisk sukker.

I dette kapittelet skal vi diskutere metodereferanser og hvordan de kan brukes som erstatninger for lambda-uttrykk.

Metodereferanser

La oss se på et enkelt eksempel på et lambda-uttrykk og forsøke å erstatte det med en metodereferanse:

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

Bruk av to lambda-uttrykk fremstår ikke særlig elegant, spesielt når de kan forkortes til metodereferanser fra klassene der de er deklarert.

Syntaksen vil se slik ut:

Example.java

Example.java

copy
1
(Class::Method)

La oss forbedre koden ovenfor ved å bruke metodereferanser:

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

Metoden toUpperCase er en del av String-klassen, så vi bruker konstruksjonen String::toUpperCase. Merk at når du bruker en metodereferanse, vil operasjonen bli brukt på hvert element, så det er ikke nødvendig å bruke et lambda-uttrykk for dette. Vi har også erstattet utskrift til skjerm med System.out::print, som også er en metodereferanse. Programmet vil bruke metoden System.out.print() på hvert element.

For øvrig foreslår IntelliJ IDEA ofte å erstatte lambda-uttrykk med metodereferanser dersom det er mulig, så du trenger ikke å huske syntaksen hver gang.

På denne måten vil IntelliJ IDEA selv foreslå forbedringer av koden din ved bruk av metodereferanser.

Oppsummering

Oppsummert medfører ikke metodereferanser noen programmeringsmessig byrde. De optimaliserer ikke prosessen, men gjør den heller ikke mer komplisert. Denne konstruksjonen er kun for å redusere mengden skrevet kode noe og forbedre lesbarheten. Om du velger å bruke lambda-uttrykk eller metodereferanser er opp til deg. For eksempel synes jeg det er tydeligere å skrive et lambda-uttrykk, og deretter vil IntelliJ automatisk erstatte det med en metodereferanse.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 4

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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?

bookMetodereferanse i Java

Sveip for å vise menyen

Før vi går videre til praksis med Stream API, bør vi utforske noen snarveier for lambda-uttrykk. Programmerere omtaler disse "snarveiene" som syntaktisk sukker.

I dette kapittelet skal vi diskutere metodereferanser og hvordan de kan brukes som erstatninger for lambda-uttrykk.

Metodereferanser

La oss se på et enkelt eksempel på et lambda-uttrykk og forsøke å erstatte det med en metodereferanse:

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

Bruk av to lambda-uttrykk fremstår ikke særlig elegant, spesielt når de kan forkortes til metodereferanser fra klassene der de er deklarert.

Syntaksen vil se slik ut:

Example.java

Example.java

copy
1
(Class::Method)

La oss forbedre koden ovenfor ved å bruke metodereferanser:

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

Metoden toUpperCase er en del av String-klassen, så vi bruker konstruksjonen String::toUpperCase. Merk at når du bruker en metodereferanse, vil operasjonen bli brukt på hvert element, så det er ikke nødvendig å bruke et lambda-uttrykk for dette. Vi har også erstattet utskrift til skjerm med System.out::print, som også er en metodereferanse. Programmet vil bruke metoden System.out.print() på hvert element.

For øvrig foreslår IntelliJ IDEA ofte å erstatte lambda-uttrykk med metodereferanser dersom det er mulig, så du trenger ikke å huske syntaksen hver gang.

På denne måten vil IntelliJ IDEA selv foreslå forbedringer av koden din ved bruk av metodereferanser.

Oppsummering

Oppsummert medfører ikke metodereferanser noen programmeringsmessig byrde. De optimaliserer ikke prosessen, men gjør den heller ikke mer komplisert. Denne konstruksjonen er kun for å redusere mengden skrevet kode noe og forbedre lesbarheten. Om du velger å bruke lambda-uttrykk eller metodereferanser er opp til deg. For eksempel synes jeg det er tydeligere å skrive et lambda-uttrykk, og deretter vil IntelliJ automatisk erstatte det med en metodereferanse.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 4
some-alt