Điều này là do sự phân công của lĩnh vực tĩnh xảy ra khi lớp được nạp (xảy ra một lần duy nhất) vào JVM. Biến số PRIVATE_AREA
sẽ không được cập nhật khi biến số DOMAIN
bị thay đổi.
public class Test {
public static String name = "Andrew";
public static String fullName = name + " Barnes";
public static void main(String[] args){
name = "Barry";
System.out.println(name); // Barry
System.out.println(fullName); // Andrew Barnes
}
}
Tôi khuyên bạn nên sử dụng cấu trúc sau.
public class Test {
private static String name = "Andrew";
public static String fullName = name + " Barnes";
public static void setName(String nameArg) {
name = nameArg;
fullName = nameArg + " Barnes";
}
}
Test2.java
public class Test2 {
public static void main(String[] args){
System.out.println(Test.fullName); // Andrew Barnes
Test.setName("Barry");
System.out.println(Test.fullName); // Barry Barnes
}
}
Đừng giới thiệu các biến tĩnh có thể thay đổi - đó là một trong những patters tồi tệ nhất trong java giới thiệu entropy và các vấn đề bảo trì – rgasiore