Phân tích một số kịch bản lạ ở sau khối tĩnh:java: truy cập vào các biến tĩnh bên trong tĩnh khối
static {
System.out.println("Inside Static Block");
i=100; // Compilation Successful , why ?
System.out.println(i); // Compilation error "Cannot reference a field before it is defined"
}
private static int i=100;
Trong khi cùng một mã đang làm việc tốt trong khi sử dụng:
static {
System.out.println("Inside Static Block");
i=100; // Compilation Successful , why ?
System.out.println(MyClass.i); // Compiles OK
}
private static int i=100;
Không chắc chắn tại sao biến khởi tạo không cần truy cập biến bằng cách sử dụng tên lớp trong khi SOP yêu cầu?
ý của bạn là hiển thị lỗi trong cả hai khối? – Bohemian
@Bohemian Tôi nghĩ rằng đây là một bản sao/dán không thành công. Khối thứ hai không hiển thị lỗi. –
cũng xem http://stackoverflow.com/questions/15820302/recursive-initializer-works-when-i-add-this – ZhongYu