Pergunta

Esta questão já tem uma resposta aqui:

Ouvi dizer que encerramentos poderão ser introduzidas no próximo padrão Java que está programado para ser lançado em algum lugar em torno do próximo verão.

O que seria este olhar sintaxe como?

Eu li em algum lugar que a introdução de fechamentos em java é uma mudança maior do que genérico estava em java 5. Isso é verdade? prós e contras?

(Até agora nós sabemos definitivamente que o encerramento não serão incluídos na próxima versão Java)

ou

edit: http://puredanger.com/ tecnologia / 2009/11/18 / encerramentos em pós-all / : D

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

edit3: Não há um momento a perder !: http://blogs.oracle .com / mr / entry / quarteto

Foi útil?

Solução

Tenha um olhar em http://www.javac.info/ .

Parece que este é como ficaria:

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

onde o bit { int x => x % 2 == 0 } é o fechamento.

Outras dicas

Ela realmente depende o que é introduzido, e de fato se será introduzido em tudo. Há uma série de propostas de fechamento de tamanhos variados.

Alex Miller Java 7 página para as propostas e mensagens vários blogs.

Pessoalmente, eu adoraria ver fechamentos - eles são bonita e incrivelmente útil - mas temo que algumas das propostas são bastante peludo

.

Em Novembro de 2009, houve uma surpreendente inversão de marcha sobre esta questão, e fechamentos vai agora ser adicionados para Java 7.

Atualização

Closures (expressões AKA lambdas) em Java 7 não aconteceu. Eram finalmente adicionado na primeira versão do Java 8 em 2014.

unofortunately você não vai encontrar um fechamento em Java 7. Se você está procurando uma solução mais leve para ter fechamento em java agora confira o projeto lambdaj:

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

Este é o java 7 características http://tech.puredanger.com/java7/#switch os exemplos são muito útil.

Note que uma "função do tipo" é realmente um tipo de acordo com a proposta:

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

Eu acho que ainda há muita discussão acontecendo com relação ao que sintaxe acabará por ser usado. Eu realmente ser muito surpreso se isso faz com que seja em Java 7 devido a tudo isso.

fechamentos será annoyinglly detalhada se não haverá qualquer tipo de inferência de tipos ...: (

Closures ter alguns casos extremos graves. Eu diria que Closures são uma mudança muito mais significativo do que genéricos e mais tarde ainda tem um número peludas casos extremos. por exemplo. As bibliotecas Java coleções não pode ser escrito / compilado sem avisos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top