Come faranno le chiusure in Java permetterà di progettazione API per sostituire disegno lingua?
Domanda
posso vedere alcuni dei benefici delle chiusure, come ad esempio come possono avere il loro posto nella semplificazione librerie esistenti e fare qualche futura progettazione più semplice ed efficiente.
Tuttavia, uno dei punti chiave menzionati nel progetto di proposta (http://www.javac.info/consensus-closures-jsr.html) è nella sezione 2.5, punto e:
(La specifica migliorerà la lingua)
e) consente futura progettazione API per sostituire progettazione del linguaggio per estendere la piattaforma Java.
sto lottando per vedere come questo è il caso, sicuramente il design linguaggio è proprio questo - la progettazione del linguaggio stesso, e non può essere sostituito da un API Java a meno che non si apre tutta una serie di API che utilizzano strane chiusure per modificare la lingua (che dubito fortemente che accadrà.)
Qualcuno può far luce su questo e forse fornire un esempio di qualcosa che ha richiesto un cambio di lingua in precedenza, ma, con l'aggiunta di chiusure, non richiede più uno?
Soluzione
progettazione API di lingua e le caratteristiche sono sicuramente intercambiabili in alcuni punti. Basta guardare qualcosa come la parola chiave sincronizzato in Java. E 'una parola chiave, ma potrebbe benissimo essere implementato come un'API se la lingua era sufficientemente non dettagliato. Le annotazioni sono un altro esempio. Il contrario un'annotazione @Stateless che rende tutti i metodi in una classe di transazionale, potrebbe anche essere una parola chiave lingua.
Chiusure in particolare, rendono facile a portata di mano un "blocco di codice" a un metodo, che potrebbe poi fare qualcosa con questo.
Un esempio greggio, una per ciascuna potrebbe essere:
for_each(myFooList, #(Foo foo) {
String something = foo.getBar() + foo.getKaz();
System.out.println(something);
});
Forse non al 100% pulito come avere la per ogni loop direttamente sostenuto dalla sintassi del linguaggio, ma permette a tutti di facile esperienza con il linguaggio simile a miglioramenti.
Altri suggerimenti
Per chi non ha letto il progetto di proposta, ecco un piccolo dettaglio più dalla più avanti nello stesso documento:
L'aggiunta di chiusure semplifica l'evoluzione della piattaforma Java. Molte richieste di miglioramento linguistiche esistenti in database pubblico bug del sole può reindirizzato come richieste API per metodi che ricevono chiusure . Molte le esigenze future per le forme dichiarazione supplementari possono invece essere soddisfatti con l'aggiunta di metodi di libreria.