Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Metodiviittaus Javassa | Edistyneet Java-Ominaisuudet ja -Tekniikat
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Java-tietorakenteet

bookMetodiviittaus Javassa

Ennen kuin siirrytään käytännön harjoituksiin Stream API:n kanssa, kannattaa tutustua lambda-lausekkeiden oikoteihin. Ohjelmoijat kutsuvat näitä "oikoteitä" nimellä syntaktinen sokeri.

Tässä luvussa käsitellään metodiviittauksia ja niiden käyttöä lambda-lausekkeiden korvaajina.

Metodiviittaukset

Tarkastellaan yksinkertaista esimerkkiä lambda-lausekkeesta ja yritetään korvata se metodiviittauksella:

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

Kahden lambda-lausekkeen käyttäminen ei näytä kovin elegantilta, erityisesti kun ne voidaan lyhentää metodiviittauksiksi niistä luokista, joissa ne on määritelty.

Syntaksi näyttää tältä:

Example.java

Example.java

copy
1
(Class::Method)

Parannetaan yllä olevaa koodia käyttämällä metodiviittauksia:

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-metodi kuuluu String-luokkaan, joten käytämme rakennetta String::toUpperCase. Huomaa, että metodiviittausta käytettäessä operaatio suoritetaan jokaiselle alkiolle, joten lambda-lauseketta ei tarvitse käyttää tässä. Korvasimme myös näytölle tulostamisen metodiviittauksella System.out::print. Ohjelma käyttää System.out.print()-metodia jokaiselle alkiolle.

Muuten, IntelliJ IDEA ehdottaa usein itse lambda-lausekkeiden korvaamista metodiviittauksilla, jos se on mahdollista, joten syntaksia ei tarvitse muistaa ulkoa joka kerta.

Tällä tavoin IntelliJ IDEA ehdottaa itse koodisi parantamista käyttämällä metodiviittauksia.

Yhteenveto

Yhteenvetona metodiviittaukset eivät lisää ohjelmallista taakkaa. Ne eivät optimoi prosessia, mutta eivät myöskään monimutkaista sitä. Tämä rakenne on tarkoitettu kirjoitetun koodin vähentämiseen ja luettavuuden parantamiseen. Lambda-lausekkeiden tai metodiviittausten käyttö on sinun päätettävissäsi. Esimerkiksi itse koen selkeämmäksi kirjoittaa lambda-lausekkeen, ja tämän jälkeen IntelliJ korvaa sen automaattisesti metodiviittauksella.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

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?

bookMetodiviittaus Javassa

Pyyhkäise näyttääksesi valikon

Ennen kuin siirrytään käytännön harjoituksiin Stream API:n kanssa, kannattaa tutustua lambda-lausekkeiden oikoteihin. Ohjelmoijat kutsuvat näitä "oikoteitä" nimellä syntaktinen sokeri.

Tässä luvussa käsitellään metodiviittauksia ja niiden käyttöä lambda-lausekkeiden korvaajina.

Metodiviittaukset

Tarkastellaan yksinkertaista esimerkkiä lambda-lausekkeesta ja yritetään korvata se metodiviittauksella:

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

Kahden lambda-lausekkeen käyttäminen ei näytä kovin elegantilta, erityisesti kun ne voidaan lyhentää metodiviittauksiksi niistä luokista, joissa ne on määritelty.

Syntaksi näyttää tältä:

Example.java

Example.java

copy
1
(Class::Method)

Parannetaan yllä olevaa koodia käyttämällä metodiviittauksia:

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-metodi kuuluu String-luokkaan, joten käytämme rakennetta String::toUpperCase. Huomaa, että metodiviittausta käytettäessä operaatio suoritetaan jokaiselle alkiolle, joten lambda-lauseketta ei tarvitse käyttää tässä. Korvasimme myös näytölle tulostamisen metodiviittauksella System.out::print. Ohjelma käyttää System.out.print()-metodia jokaiselle alkiolle.

Muuten, IntelliJ IDEA ehdottaa usein itse lambda-lausekkeiden korvaamista metodiviittauksilla, jos se on mahdollista, joten syntaksia ei tarvitse muistaa ulkoa joka kerta.

Tällä tavoin IntelliJ IDEA ehdottaa itse koodisi parantamista käyttämällä metodiviittauksia.

Yhteenveto

Yhteenvetona metodiviittaukset eivät lisää ohjelmallista taakkaa. Ne eivät optimoi prosessia, mutta eivät myöskään monimutkaista sitä. Tämä rakenne on tarkoitettu kirjoitetun koodin vähentämiseen ja luettavuuden parantamiseen. Lambda-lausekkeiden tai metodiviittausten käyttö on sinun päätettävissäsi. Esimerkiksi itse koen selkeämmäksi kirjoittaa lambda-lausekkeen, ja tämän jälkeen IntelliJ korvaa sen automaattisesti metodiviittauksella.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 4
some-alt