outra questão sinistra…
notem que a classe local esta fora do escopo, teoricamente não poderiamos usa-la (getValue() que retorna o valor de fi é implementado nela), mas este codigo compila e executa perfeitamente imprimindo os numeros de 0 a 9.
public class Weird { // cf. closure
interface IntHolder { int getValue(); }
public static void main(String[] args) {
IntHolder[] holders = new IntHolder[10];
for(int i=0; i<10; i++) {
final int fi = i;
class MyIntHolder implements IntHolder {
public int getValue() { return fi; }
}
holders[i] = new MyIntHolder();
} // MyIntHolder invisible here
for(int i=0; i<10; i++)
System.out.println(holders[i].getValue());
}
}