segunda-feira, 11 de agosto de 2008

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

5 comentários:

Fabio Nascimento disse...

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é +

Marcelo Martins disse...

O que que vem a ser aquele @shared?

Tiago Peczenyj disse...

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 disse...

Fiquei com medo que tu falasse que era uma "variavel global"

hehe

Tiago Peczenyj disse...

Não dá ideia!!

Logo aparece um @Global da vida... ;-)