[Tiago Peczenyj] Closures em Java - Parte 2

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

Comments

Tiago Peczenyj
Não dá ideia!!

Logo aparece um @Global da vida… ;-)
Marcelo Martins
Fiquei com medo que tu falasse que era uma “variavel global”

hehe
Tiago Peczenyj
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.
Marcelo Martins
O que que vem a ser aquele @shared?
Fabio Nascimento
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é +