static-initialization

Java: kiedy statyczny blok inicjalizacji jest przydatny?

Jaka jest różnica między inicjalizacją w bloku static: public class staticTest { static String s; static int n; ... lass staticTest { static String s = "I'm static"; static int n = 500; static double d = 4000.0001; ....

Czy ostateczny termin jest źle zdefiniowany?

Po pierwsze, puzzle: Co drukuje poniższy kod? public class RecursiveStatic { public static void main(String[] args) { ... e następujące wyjście: a=5 a=5 Co nie wiąże się z główną częścią mojego pytania: jak zmienna final zmienia swoją zmienną?

Dlaczego kwalifikowana statyczna zmienna końcowa nie jest dozwolona w statycznym bloku inicjalizacji?

Przypadek 1 class Program { static final int var; static { Program.var = 8; // Compilation error } ... void main(String[] args) { System.out.println(Program.var); } } Dlaczego Przypadek 1 powoduje błąd kompilacji?

Jak wymusić inicjalizację statycznego członka?

Rozważ ten przykładowy kod: template<class D> char register_(){ return D::get_dummy(); // static function } temp ... atic char const get_dummy() { (void)dummy; return 42; } }; Mimo to chciałbym, aby Klasa pochodna nie musiała tego robić. :|

Thread-bezpieczna inicjalizacja funkcji-Lokalne statyczne obiekty const

To pytanie skłoniło mnie do zakwestionowania praktyki, którą stosowałem od lat. Dla thread-safe initializationof function- ... z 1 . i 2. powyżej), zacznę bounty na tym. Again:nie interesuje mnie, co mogę zrobić zamiast , naprawdę chcę wiedzieć o to.