A Giava, funzioni anonime , note anche come espressioni lambda. È stato introdotto in Java 8 come un modo per fornire un codice più conciso e leggibile. Ci permettono di definire una funzione in una singola riga di codice senza dover definire esplicitamente una classe o un'interfaccia.
annotazioni nello stivale primaverile
Cos'è una funzione anonima?
Una funzione anonima è una funzione che non ha nome e non è legata a un identificatore. In genere è definito in linea e può essere passato come argomento a un'altra funzione o restituito come valore da una funzione. In Java, le funzioni anonime vengono implementate come espressioni lambda, che rappresentano un modo abbreviato per definire una funzione anonima.
Sintassi
La sintassi per una funzione anonima in Java è la seguente:
(parameters) -> { body }
I parametri sono gli input della funzione e il corpo è il codice che viene eseguito quando viene chiamata la funzione. Ecco un esempio di una funzione anonima che accetta due numeri interi come input e restituisce la loro somma:
(int a, int b) -> { return a + b; }
La funzione anonima di cui sopra può essere passata come argomento a un'altra funzione o assegnata a una variabile:
Function add = (a, b) -> a + b;
In questo esempio, definiamo una variabile chiamata add che è una funzione che accetta due numeri interi come input e restituisce la loro somma.
Vantaggi delle funzioni anonime
L'uso di funzioni anonime in Java presenta numerosi vantaggi, tra cui:
Sintassi concisa: Le funzioni anonime forniscono un modo conciso per definire una funzione senza dover definire una classe o un'interfaccia separata.
Codice leggibile: Poiché le funzioni anonime sono definite in linea, il codice può essere più semplice da leggere e comprendere.
Flessibilità: Le funzioni anonime possono essere passate come argomenti ad altre funzioni o restituite come valori dalle funzioni, fornendo maggiore flessibilità nel modo in cui vengono utilizzate le funzioni.
Prestazione migliorata: L'utilizzo di funzioni anonime può migliorare le prestazioni riducendo la quantità di memoria e la potenza di elaborazione necessarie per definire e chiamare le funzioni.
ecco un esempio di codice Java che dimostra l'uso di funzioni anonime (espressioni lambda) per filtrare un elenco di numeri interi:
AnonymousFunctionExample.java
import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; public class AnonymousFunctionExample { public static void main(String[] args) { List numbers = new ArrayList(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); numbers.add(5); // Filter the list to only include even numbers Predicate isEven = (n) -> n % 2 == 0; List evenNumbers = filter(numbers, isEven); // Print the even numbers System.out.println('Even numbers:'); for (Integer number : evenNumbers) { System.out.println(number); } } // Filter a list using a predicate public static List filter(List list, Predicate predicate) { List result = new ArrayList(); for (T element : list) { if (predicate.test(element)) { result.add(element); } } return result; } }
Produzione:
Even numbers: 2 4
In questo codice definiamo un elenco di numeri interi e quindi utilizziamo una funzione anonima (espressione lambda) per definire un predicato che filtra l'elenco per includere solo numeri pari. Utilizziamo quindi il metodo filter per applicare il predicato all'elenco e restituire un nuovo elenco di numeri pari. Infine, stampiamo i numeri pari utilizzando un ciclo for.
Ecco un altro esempio di codice Java che dimostra l'uso di funzioni anonime (espressioni lambda) per ordinare un elenco di stringhe:
AnonymousFunctionExample.java
import java.util.ArrayList; import java.util.Comparator; import java.util.List; public class AnonymousFunctionExample { public static void main(String[] args) { List fruits = new ArrayList(); fruits.add('Apple'); fruits.add('Banana'); fruits.add('Grape'); fruits.add('Orange'); fruits.add('Pineapple'); // Sort the list of fruits alphabetically fruits.sort((f1, f2) -> f1.compareTo(f2)); // Print the sorted list of fruits System.out.println('Sorted list of fruits:'); for (String fruit : fruits) { System.out.println(fruit); } } }
Produzione:
Sorted list of fruits: Apple Banana Grape Orange Pineapple
Nel codice precedente, abbiamo definito un elenco di frutti e quindi utilizziamo una funzione anonima (espressione lambda) per definire un comparatore che ordina l'elenco in ordine alfabetico. Utilizziamo quindi il metodo sort per applicare il comparatore all'elenco e ordinarlo. Infine, stampiamo l'elenco ordinato dei frutti utilizzando un ciclo for.
Conclusione
Le funzioni anonime in Java forniscono un modo conciso e leggibile per definire le funzioni senza dover definire una classe o un'interfaccia separata. Possono essere utilizzati per migliorare le prestazioni del codice e fornire maggiore flessibilità nel modo in cui vengono utilizzate le funzioni. Con l'introduzione delle espressioni lambda in Java 8, le funzioni anonime sono diventate uno strumento importante per gli sviluppatori per scrivere codice più efficiente e gestibile.