– Cześć, Amigo! Słyszałem, że Raszi wyjaśnił Ci coś nowego i ekscytującego?!
– Zgadza się, Kim.
– Mój temat będzie równie interesujący. Chcę Ci opowiedzieć o tym, jak ładuje się klasy do pamięci.
Klasy w języku Java to pliki na dysku, zawierające kod bajtowy, który jest skompilowanym kodem Java.
– Tak, pamiętam.
Maszyna Java nie ładuje ich, jeśli nie musi. Gdy tylko gdzieś w kodzie pojawi się odwołanie do jakiejś klasy, maszyna Java sprawdza, czy jest ona załadowana. W przeciwnym razie ładuje ją i inicjalizuje.
Inicjalizacja klasy polega na przypisaniu wartości do wszystkich jej zmiennych statycznych i wywołaniu wszystkich statycznych bloków inicjalizacyjnych.
– To wydaje się podobne do wywoływania konstruktora na obiekcie. Ale co to jest statyczny blok inicjalizacyjny?
– Jeśli musisz wykonać złożony kod (na przykład załadować coś z pliku), aby zainicjalizować obiekty, możemy to zrobić w konstruktorze. Jednakże, zmienne statyczne nie mają takiej możliwości. Ponieważ jednak jest to potrzebne, możesz dodać do klas jeden lub więcej statycznych bloków inicjalizacyjnych. Odpowiadają one w zasadzie konstruktorom statycznym.
Wygląda to tak:
Kod | Co się dzieje naprawdę |
---|---|
|
|
To bardzo podobne do tego, co dzieje się w momencie wywołania konstruktora. Zapisałem go nawet jako (nieistniejący) konstruktor statyczny.
Już rozumiem.
– Bardzo dobrze.
GO TO FULL VERSION