Domanda

    

Questa domanda ha già una risposta qui:

    
            
  •              Chiusura in Java 7 [chiuso]                                      7 risposte                          
  •     
    

Ho sentito che le chiusure potrebbero essere introdotte nel prossimo standard Java che dovrebbe essere rilasciato da qualche parte intorno alla prossima estate.

Come sarebbe questa sintassi?

Ho letto da qualche parte che l'introduzione di chiusure in Java è un cambiamento più grande di quello generico in Java 5. È vero? pro e contro?

(Ormai sappiamo sicuramente che le chiusure non saranno incluse nella prossima versione di Java)

OPPURE

modifica: http://puredanger.com/ tech / 2009/11/18 / chiusura-dopotutto / : D

edit2: ripensamento di JDK7: http://blogs.oracle.com/ mr / ingresso / rethinking_jdk7

edit3: Non c'è un momento da perdere !: http://blogs.oracle .com / mr / ingresso / quartetto

È stato utile?

Soluzione

Dai un'occhiata a http://www.javac.info/ .

Sembra che sia così:

boolean even = { int x => x % 2 == 0 }.invoke(15);

dove {int x = > x% 2 == 0} bit è la chiusura.

Altri suggerimenti

Dipende molto da ciò che viene introdotto, e in effetti se verrà introdotto affatto. Esistono numerose proposte di chiusura di varie dimensioni.

Vedi pagina Java 7 di Alex Miller per le proposte e vari post di blog.

Personalmente mi piacerebbe vedere chiusure - sono belli e incredibilmente utili - ma temo che alcune delle proposte siano piuttosto pelose.

Nel novembre 2009 si è verificata un'inversione di tendenza sorprendente su questo problema e le chiusure verranno ora aggiunte a Java 7.

Aggiornamento

Le chiusure (espressioni AKA lambdas) in Java 7 non sono avvenute. Sono stati finalmente aggiunti nella prima versione di Java 8 nel 2014.

Unofortunatamente non troverai la chiusura in Java 7. Se stai cercando una soluzione più leggera per avere la chiusura in Java, ora controlla il progetto lambdaj:

http://code.google.com/p/lambdaj/

Queste sono le funzionalità di Java 7 http://tech.puredanger.com/java7/#switch gli esempi sono molto utili.

Nota che un tipo di funzione "quot" è davvero un tipo sotto la proposta:

{int => boolean} evaluateInt;    //declare variable of "function" type
evaluateInt = {int x => x % 2 }; //assignment

Penso che ci sia ancora molto dibattito in merito a quale sintassi verrà utilizzata alla fine. In realtà sarei piuttosto sorpreso se questo diventasse Java 7 a causa di tutto ciò.

le chiusure saranno fastidiosamente dettagliate se non ci sarà alcun tipo di inferenza di tipo ... :(

Le chiusure presentano alcuni casi limite gravi. Direi che le chiusure sono un cambiamento molto più significativo rispetto a Generics e che in seguito ha ancora un numero di casi pelosi. per esempio. Le librerie Java Collections non possono essere scritte / compilate senza avvisi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top