Bạn phải đặt tĩnh final static
hoặc xóa static
.
Trong Java, tĩnh có nghĩa là nó là một biến/phương thức của một lớp, nó thuộc về toàn bộ lớp nhưng không thuộc về một trong các đối tượng nhất định của nó. Điều này có nghĩa là từ khóa tĩnh chỉ có thể được sử dụng trong một 'phạm vi lớp'.
Nói chung, trong C, bạn có thể có các biến được sắp xếp cục bộ được phân bổ tĩnh. Thật không may, điều này không được hỗ trợ trực tiếp trong Java. Nhưng bạn có thể đạt được hiệu quả tương tự bằng cách sử dụng các lớp lồng nhau.
Ví dụ: nội dung sau được phép nhưng đó là kỹ thuật kém, vì phạm vi của x lớn hơn nhiều so với mức cần thiết. Ngoài ra còn có sự phụ thuộc không rõ ràng giữa hai thành viên (x và getNextValue).
static int x = 42;
public static int getNextValue() {
return ++x;
}
Một thực sự muốn làm những điều sau đây, nhưng nó không phải là quy phạm pháp luật:
public static int getNextValue() {
static int x = 42; // not legal :-(
return ++x;
}
Tuy nhiên bạn có thể làm điều này thay vào đó,
public static class getNext {
static int x = 42;
public static int value() {
return ++x;
}
}
Đó là kỹ thuật tốt hơn tại các chi phí của một số xấu xí.
Nguồn
2014-06-17 17:00:34
Tại sao điều này có ý nghĩa? Khi nói về các biến chỉ nằm trong phạm vi bên trong phần thân của phương thức, nó không có ý nghĩa gì khi nói rằng chúng là "cấp độ lớp". – awksp
Bởi vì nó không phải là không hợp lý và/hoặc dự phòng ở mức tốt nhất. –
@ user3580294 tôi đang tìm cách khai báo một biến (mã này không thực tế) bên trong một vòng lặp tĩnh để giá trị của nó không bao giờ thay đổi với lần lặp tiếp theo. – YakRangi