Question

    

Cette question a déjà une réponse ici:

    
            
  •              Fermeture en Java 7 [fermé]                                      7 réponses                          
  •     
    

J'ai entendu dire que des fermetures pourraient être introduites dans le prochain standard Java qui devrait être publié quelque part vers l'été prochain.

À quoi ressemblerait cette syntaxe?

J'ai lu quelque part que l'introduction de fermetures dans Java est un changement plus important que le générique dans Java 5. Est-ce vrai? avantages et inconvénients?

(Nous savons à présent que les fermetures ne seront pas incluses dans la prochaine version de Java.)

OU

modifier: http://puredanger.com/ tech / 2009/11/18 / fermetures après tout / : D

edit2: Repenser JDK7: http://blogs.oracle.com/ mr / entry / rethinking_jdk7

edit3: Il n'y a pas un moment à perdre !: http://blogs.oracle .com / mr / entry / quartet

Était-ce utile?

La solution

Consultez http://www.javac.info/ .

Il semble que cela ressemble à cela:

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

où le {int x = > x% 2 == 0} le bit est la fermeture.

Autres conseils

Cela dépend vraiment de ce qui est présenté, et effectivement si il sera effectivement introduit. Il existe un certain nombre de propositions de fermeture de différentes tailles.

Voir la page Java 7 d’Alex Miller pour les propositions et les différents billets de blog.

Personnellement, j'aimerais beaucoup voir les fermetures: elles sont belles et incroyablement utiles - mais je crains que certaines des propositions ne soient assez volumineuses.

En novembre 2009, cette question a suscité un revirement étonnant et les fermetures vont maintenant être ajoutées à Java 7.

Mettre à jour

Les fermetures (expressions AKA lambdas) dans Java 7 n’ont pas eu lieu. Ils ont été finalement ajoutés dans la première version de Java 8 en 2014.

Malheureusement, vous ne trouverez pas de fermeture dans Java 7. Si vous recherchez une solution plus légère pour fermer en java, consultez le projet lambdaj:

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

Il s'agit des fonctionnalités java 7 http://tech.puredanger.com/java7/#switch les exemples sont très utiles.

Notez qu'un " type de fonction " est vraiment un type dans la proposition:

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

Je pense qu’il ya encore beaucoup de débats sur la syntaxe qui sera finalement utilisée. En fait, je serais assez surpris que cela se retrouve dans Java 7 à cause de tout cela.

les fermetures seront ennuyeuses et verbeuses s'il n'y a aucune sorte d'inférence de type ...: (

Les fermetures ont quelques cas graves. Je dirais que les fermetures représentent un changement beaucoup plus important que les génériques et que le dernier a encore un certain nombre de cas délicats. par exemple. Les bibliothèques Java Collections ne peuvent pas être écrites / compilées sans avertissements.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top