sobota, 10 października 2015

Java - static block

Ciekawostka Java - niby prosta ale można się przejechać.
Pytanie co się wyświetli true czy false?
W sumie wydaje się że powinno być true bo jawnie utawiam C2.varStatic = true; Ale blok static z C2 się uruchamia wtedy kiedy jest ładowana klasa C2. W moim mniemaniu dostęp do zmiennej varStatic w C2 wymaga obecności klasy C2 bo ta zmienna należy do C2. Więc niestety sekcja static w C2 odpali się zanim cokolwiek ustawie... i w tym problem ze wyświetli się false

// file C2.java
public class C2 {
 public static boolean varStatic;
 static {
   System.out.println(varStatic);
 }
}

public class C1 {
 public static void main(String[] a) {
  C2.varStatic = true;
  C2 c2 = new C2(); 
 }
}


Brak komentarzy:

Prześlij komentarz