Обновление статических переменных в java

У меня есть класс со статическими переменными, как:

 class Commons { 
public static String DOMAIN ="www.mydomain.com"; 
public static String PRIVATE_AREA = DOMAIN + "/area.php";
} 

и если я попытаюсь изменить домен из действия Android (или другого класса java) во время выполнения, переменная домена изменится, но PRIVATE_AREA не изменится. Почему?

4 ответов


это потому, что назначение статических полей происходит после загрузки класса (происходит только один раз) в JVM. The PRIVATE_AREA переменная не будет обновляться, когда DOMAIN переменной изменяется.

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
    }
}

Я предлагаю вам использовать следующую структуру.

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";
    }

}

Условие_2.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
    }
}

Это потому, что статические переменные инициализируются только один раз , в начале выполнения.

на http://www.guru99.com/java-static-variable-methods.html


PRIVATE_AREA не изменился, потому что он установлен на время объявления. При изменении домена он не влияет на PRIVATE_AREA. Может быть, лучше работать с сеттером(...) и методы getter () и локальные переменные. При получении PRIVATE_AREA вы снова создаете значение retrun.


присвоение переменной происходит во время загрузки класса, поэтому после этого, если вы измените значение одной статической переменной, она не будет отражать там, где она назначена другой переменной