Un altro vantaggio di lambda (e metodo riferimenti) è visibile quando si combinano con API Stream e altre funzioni aggiunte in Java 8, ad esempio Opzionale.
Considerate questo codice:
private void pushToFront(AbstractInfo contactInfo) {
registeredWindows.stream()
.filter(window -> window.getWindowId() == contactInfo.getId())
.findAny()
.ifPresent(Window::pushToFront);
}
Il metodo filtra l'elenco delle finestre registrati che corrispondono WindowID con id del contatto restituzione di un optional. Se la lista contiene una finestra con id corrispondente, allora il valore in Opzionale è presente e il metodo pushToFront è su di esso. Confronta questo per la stessa funzionalità, ma scritto in Java 7:
private void pushToFront(AbstractInfo contactInfo) {
for (Window window : registeredWindows) {
if (window.getWindowId() == contactInfo.getId() {
window.pushToFront();
}
}
}
Il codice con l'espressione lambda, ruscello e metodo di riferimento, almeno per me, è più conciso e leggibile (quando si ottiene l'uso di utilizzare flussi). L'esempio sopra è abbastanza semplice, ma consideratene uno, che in Java 7 richiederebbe cicli annidati, più istruzioni condizionali, ecc. Non è facile leggere ancora più difficile per non perdere traccia di ciò che sta accadendo.
Lambdas consente quindi a uno di sfruttare appieno altre funzionalità nette di Java 8 che, tra l'altro, si traducono in codice pulito, pulito, efficiente e facile da capire.
Linea di fondo è, si dovrebbe prendere in considerazione le espressioni lambda come parte di un tutto più grande che sono grandi per se stessi, ma ancora meglio quando combinato con altri 'mattoni' di Java 8.
codice cis, più leggibilità, meno cerimonie per fare cose semplici, sostituzione della classe anonima (devi ancora scrivere una classe anonima, in caso di lambda non devi scrivere una classe). Riutilizzo del codice, creare espressioni lambda e trasmetterle ai metodi. Ulteriore ulteriore introduzione di lambda ha permesso di abilitare il numero di cose buone in API come Stream che fornisce un'astrazione sull'iterazione. –
Per l'uso di lambda e perché è stato introdotto leggere questo libro: Java 8 Lambdas di Richard Warburton –
In breve: codice boilerplate inferiore = più manutenzione. –