Bloki inicjujące w Javie

Każdy, kto programuje w Javie wie, że do utworzenia obiektów wykorzystujemy konstruktory. Okazuje się jednak, że istnieją także inne konstrukcje, które mogą być wywoływane podczas tworzenia obiektów.

Statyczne bloki inicjujące

W ramach klasy możesz zapisać statyczny blok inicjujący, który wygląda w następujący sposób:

class Foo {
    static {
        System.out.println("Blok statyczny");
    }
}

Taki blok wykonywany jest tylko raz, podczas ładowania klasy do wirtualnej maszyny Javy przez ClassLoader. Jeżeli więc odwołamy się do powyższej klasy w dowolny sposób z poziomu metody main(), to w konsoli zobaczymy wydruk, pomimo tego, że nigdzie w programie nie utworzyliśmy żadnego obiektu i nie wywołaliśmy żadnej metody klasy Foo.

class Bar {
    public static void main(String[] args) {
        Foo foo;
    }
}

Wynik działania powyższego programu w konsoli:

Bloki inicjujące

Kolejność wykonania kodu

Bloki inicjujące a dziedziczenie

Dyskusja i komentarze

Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.