In final variable passed to anonymous class via constructor, Jon Skeet ha affermato che le variabili vengono passate all'istanza della classe anonima tramite un costruttore generato automaticamente. Perché dovrei non essere in grado di vedere il costruttore utilizzando la riflessione in questo caso:Passaggio di variabili finali a classi anonime
public static void main(String... args) throws InterruptedException {
final int x = 100;
new Thread() {
public void run() {
System.out.println(x);
for (Constructor<?> cons : this.getClass()
.getDeclaredConstructors()) {
StringBuilder str = new StringBuilder();
str.append("constructor : ").append(cons.getName())
.append("(");
for (Class<?> param : cons.getParameterTypes()) {
str.append(param.getSimpleName()).append(", ");
}
if (str.charAt(str.length() - 1) == ' ') {
str.replace(str.length() - 2, str.length(), ")");
} else
str.append(')');
System.out.println(str);
}
}
}.start();
Thread.sleep(2000);
}
L'output è:
100
constructor : A$1()
@Bohemian: Dato che conosco l'origine della domanda, penso che sia :) –