Giusto per conferma, l'espressione lambda io posso utilizzarla SOLO se ho anche un'interfaccia funzionale da poter usare, giusto? Questo perchè appunto l'espressione lambda permette di rimpiazzare un'interfaccia funzionale.
Giusto per conferma, l'espressione lambda io posso utilizzarla SOLO se ho anche un'interfaccia funzionale da poter usare, giusto? Questo perchè appunto l'espressione lambda permette di rimpiazzare un'interfaccia funzionale.
Sì, è così, perlomeno al momento in Java 8. L'inferenza funziona solo se una lambda expression (o method reference) viene assegnata direttamente (a una variabile o a un parametro) ad una interfaccia "funzionale".
Runnable r = () -> { .....codice che non ritorna nulla...... };
Così è corretto.
Ma:
Object o = () -> { .....codice che non ritorna nulla...... };
NON compila. Il compilatore non ha appigli per dedurre ciò che gli serve per applicare la lambda expression.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet