Trong final variable passed to anonymous class via constructor, Jon Skeet đã đề cập rằng các biến được chuyển đến cá thể lớp ẩn danh thông qua một hàm tạo được tạo tự động. Tại sao tôi không thể nhìn thấy các nhà xây dựng sử dụng phản chiếu trong trường hợp đó:Chuyển biến cuối cùng cho các lớp ẩn danh
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);
}
Đầu ra là:
100
constructor : A$1()
@Bohemian: Do tôi biết nguồn gốc của câu hỏi, tôi nghĩ rằng đó là :) –