Riferimento a Metodo in Java
Prima di passare alla pratica con la Stream API, è opportuno esaminare alcune scorciatoie per le espressioni lambda. I programmatori si riferiscono a queste "scorciatoie" come syntactic sugar.
In questo capitolo verranno trattati i riferimenti a metodi e il loro utilizzo come sostituti delle espressioni lambda.
Riferimenti a Metodi
Analizziamo un semplice esempio di espressione lambda e proviamo a sostituirla con un riferimento a metodo:
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)); } }
Utilizzare due espressioni lambda non appare molto elegante, soprattutto quando è possibile abbreviare utilizzando i riferimenti a metodi dalle classi in cui sono dichiarati.
La sintassi sarà la seguente:
Example.java
1(Class::Method)
Miglioriamo il codice sopra utilizzando i riferimenti ai metodi:
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); } }
Il metodo toUpperCase fa parte della classe String, quindi si utilizza la costruzione String::toUpperCase. Si noti che, utilizzando un riferimento a un metodo, l'operazione verrà applicata a ciascun elemento, quindi non è necessario utilizzare un'espressione lambda per questo. Abbiamo inoltre sostituito la stampa a schermo con System.out::print, anch'esso un riferimento a un metodo. Il programma applicherà il metodo System.out.print() a ciascun elemento.
Inoltre, IntelliJ IDEA suggerisce costantemente di sostituire le espressioni lambda con riferimenti ai metodi quando possibile, quindi non è necessario memorizzare la sintassi ogni volta.
In questo modo, IntelliJ IDEA stesso suggerirà di migliorare il tuo codice utilizzando i riferimenti ai metodi.
Riepilogo
In sintesi, i riferimenti ai metodi non aggiungono alcun onere programmatico. Non ottimizzano il processo ma nemmeno lo complicano. Questa costruzione serve semplicemente a ridurre leggermente il codice scritto e a migliorare la leggibilità. La scelta tra espressioni lambda o riferimenti ai metodi spetta a te. Ad esempio, trovo più chiaro scrivere un'espressione lambda, e poi IntelliJ la sostituirà automaticamente con un riferimento al metodo.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Fantastico!
Completion tasso migliorato a 4
Riferimento a Metodo in Java
Scorri per mostrare il menu
Prima di passare alla pratica con la Stream API, è opportuno esaminare alcune scorciatoie per le espressioni lambda. I programmatori si riferiscono a queste "scorciatoie" come syntactic sugar.
In questo capitolo verranno trattati i riferimenti a metodi e il loro utilizzo come sostituti delle espressioni lambda.
Riferimenti a Metodi
Analizziamo un semplice esempio di espressione lambda e proviamo a sostituirla con un riferimento a metodo:
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)); } }
Utilizzare due espressioni lambda non appare molto elegante, soprattutto quando è possibile abbreviare utilizzando i riferimenti a metodi dalle classi in cui sono dichiarati.
La sintassi sarà la seguente:
Example.java
1(Class::Method)
Miglioriamo il codice sopra utilizzando i riferimenti ai metodi:
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); } }
Il metodo toUpperCase fa parte della classe String, quindi si utilizza la costruzione String::toUpperCase. Si noti che, utilizzando un riferimento a un metodo, l'operazione verrà applicata a ciascun elemento, quindi non è necessario utilizzare un'espressione lambda per questo. Abbiamo inoltre sostituito la stampa a schermo con System.out::print, anch'esso un riferimento a un metodo. Il programma applicherà il metodo System.out.print() a ciascun elemento.
Inoltre, IntelliJ IDEA suggerisce costantemente di sostituire le espressioni lambda con riferimenti ai metodi quando possibile, quindi non è necessario memorizzare la sintassi ogni volta.
In questo modo, IntelliJ IDEA stesso suggerirà di migliorare il tuo codice utilizzando i riferimenti ai metodi.
Riepilogo
In sintesi, i riferimenti ai metodi non aggiungono alcun onere programmatico. Non ottimizzano il processo ma nemmeno lo complicano. Questa costruzione serve semplicemente a ridurre leggermente il codice scritto e a migliorare la leggibilità. La scelta tra espressioni lambda o riferimenti ai metodi spetta a te. Ad esempio, trovo più chiaro scrivere un'espressione lambda, e poi IntelliJ la sostituirà automaticamente con un riferimento al metodo.
Grazie per i tuoi commenti!