thể bất cứ ai giải thích những gì là sai với mã này:bất hợp pháp vấn đề về phía trước Reference java
public class Base {
static {
i = 1;
System.out.println("[Base]after static init block i=" + i);// LINE 1
System.out.println("*************************************");
System.out.println();
}
static int i;
public static void main(String[] args) {
System.out.println(Base.i);
}
}
Nếu tôi nhận xét dòng 1 - mọi thứ đều OK và Base.main phương pháp in "1". Nếu LINE 1 - không được nhận xét, có lỗi biên dịch thời gian: "tham chiếu về phía trước bất hợp pháp". Vì vậy, như tôi hiểu trong khối init tĩnh tôi có thể thiết lập giá trị cho i, nhưng không đọc. Bất cứ ai có thể giải thích lý do tại sao?
Tôi không nghĩ rằng hành vi như được mô tả trong câu hỏi là lỗi. – assylias