L’interfaccia funzionale Function<T, R> in Java è un’interfaccia funzionale che rappresenta una funzione che accetta un argomento di tipo T e restituisce un valore di tipo R.
Contiene un metodo apply: R apply(T t)
Function<Integer, Integer> quadrifica = x -> x * x; int risultato = quadrifica.apply(5); System.out.println(risultato); // stampa 25
Metodi di default
andThen(funzione): ritorna una funzione composta, che effettua prima la funzione su cui lo invochiamo e poi la funzione che abbiamo passato in input.
copose(funzione): ritorna una funzione composta dove viene prima effettuata la funzione in input e poi quella su cui è chiamato il metodo.
identify(): ritorna la funzione identità che ritorna sempre il suo parametro.
Function`<Integer, Integer> quadrifica = x -> x * x; Function`<Integer, Integer> triplica = x -> x * 3; Function`<Integer, Integer> composizione = quadrifica.andThen(triplica); int risultato = composizione.apply(5); System.out.println(risultato); // stampa 75
Predicate
L’interfaccia Predicate<T> in Java è un’interfaccia funzionale che rappresenta una funzione che accetta un argomento di tipo T e restituisce un valore booleano.
Contiene il metodo test: boolean test(T t)
Predicate<Integer> maggioreDi10 = x -> x > 10; boolean risultato =` maggioreDi10.test(15); System.out.println(risultato); // stampa true
Metodi di default
and(Predicate<? super T> other): ritorna una funzione composta che effettua prima la funzione su cui lo invochiamo e poi la funzione che abbiamo passato in input. La funzione composta restituisce true solo se entrambe le funzioni restituiscono true.
or(Predicate<? super T> other): ritorna una funzione composta che effettua prima la funzione su cui lo invochiamo e poi la funzione che abbiamo passato in input. La funzione composta restituisce true se almeno una delle funzioni restituisce true.
negate(): ritorna una funzione che nega la funzione originale. La funzione negata restituisce true se la funzione originale restituisce false, e false altrimenti.
Predicate`<Integer> maggioreDi10 = x -> x > 10; Predicate`<Integer> minoreDi20 = x -> x < 20; Predicate`<Integer> compresoTra10E20 = maggioreDi10.and(minoreDi20);
Supplier
L’interfaccia Supplier<T> in Java è un’interfaccia funzionale che rappresenta una funzione che non accetta argomenti e restituisce un valore di tipo T.
oss: spesso utilizzato con i costruttori che non hanno input
Supplier<Integer> numeroCasuale = () -> (int) (Math.random() * 100); int risultato = numeroCasuale.get(); System.out.println(risultato); // stampa un numero casuale
Consumer
L’interfaccia Consumer<T> in Java è un’interfaccia funzionale che rappresenta una funzione che accetta un argomento di tipo T e non restituisce alcun valore.
void accept(T t);
L’interfaccia Consumer ha un solo metodo astratto, chiamato accept, che viene utilizzato per eseguire l’azione sulla classe di tipo T.