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.


Rispondi quotando