public class InstanceBuilder {
private static final InstanceBuilder INSTANCE = new InstanceBuilder();
private static String name = null;
private InstanceBuilder() {
System.out.println("Setting cons()");
name = "Testing";
}
public static String getName() {
return name;
}
}
public class Driver {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("value is " + InstanceBuilder.getName());
}
}
wyjściowa:Zrozumienie statyczna zmienna inicjalizacji w Javie
Setting cons()
value is null
Dlaczego to wartość wydruku jako null
chociaż mam ustawić zmienną w konstruktorze static
i nazywa się zgodnie z oczekiwaniami. Jeśli próbuję drukować w konstruktorze, to drukuje on kod Testing
, ale jeśli zadzwonię z metody public static
, jest to null
. Wiem, że jeśli zmienię to na INSTANCE.name
, to działa. Ale chcę zrozumieć, dlaczego nie działa, jeśli mam bezpośredni dostęp do zmiennej static
, ponieważ ta sama kopia powinna być udostępniona. Czego mi tu brakuje?
Dzięki za wyjaśnienie wątpliwości – Kars