Ainda sobre a Closures do java 7, agora será possivel fazer isso:
public class A {
        public static void main(String args[]) {
            @Shared int acumulador = 0;
            {int => int } xxx  = { int i =>  acumulador += i; i};
            System.out.println(xxx.invoke(1));
            System.out.println(xxx.invoke(2));
            System.out.println(xxx.invoke(3));
            System.out.println("o valor do acumulador eh " + acumulador );
        }
}Só eu estou achando divertido?
http://gafter.blogspot.com/2008/08/java-closures-prototype-feature.html
 

5 comentários:
Pois é, a única dúvida é como ele faz o autoboxing escondido(leia-se por debaixo dos panos)?
Mas no geral, tbm estou gostando, vamos ver... quando chegar a hora do SDK implementar isso de verdade mesmo.
Té +
O que que vem a ser aquele @shared?
Martins, sem o @Shared o codigo compila mas gera um warning. É uma marcação que a variavel é compartilhada com outra closure ou bloco de código.
Fiquei com medo que tu falasse que era uma "variavel global"
hehe
Não dá ideia!!
Logo aparece um @Global da vida... ;-)
Postar um comentário