Wozu static block?
-
Moin!
Kurz und bündig: Welche Verwendung findet ein static block in Java? Außer, dass man damit static-Variablen initialisieren kann...
-
Darin kann man sachen machen, die gemacht werden sollen, wenn die Klasse geladen wird. z.B. Arrays o.ä. initialisieren.
-
LeGaN schrieb:
Darin kann man sachen machen, die gemacht werden sollen, wenn die Klasse geladen wird. z.B. Arrays o.ä. initialisieren.
Wo ist denn der Vorteil gegenüber einer Klassenmethode?
-
Weil der Block automatisch ausgeführt wird, wenn die Klasse geladen wird, also einmal.
Bsp.:
public class Test { public static int[][] zahl; static { zahl=new int[2][2]; zahl[0][0]=5; zahl[0][1]=7689; zahl[1][0]=9; zahl[1][1]=989854; } }
Das Array wird sozusagen dann "automatisch" initialisiert, ohne, dass du dafür erst eine Klassenmethode aufrufen musst.
-
eigentlich sind diese static sachen doch fast wie globale variablen, vorallem wenn sie public sind.
ein wirklich gutes reales beispiel gibt es doch nicht wieso man sowas braucht.
-
naja schrieb:
eigentlich sind diese static sachen doch fast wie globale variablen, vorallem wenn sie public sind.
ein wirklich gutes reales beispiel gibt es doch nicht wieso man sowas braucht.static-Variablen brauchst Du zum Beispiel für das Singleton-Pattern.
-
Fürs singleton reicht eine und da brauch ich keine static block, das ist noch so einigermaßen ok. Oft wird es aber auch nur als globale variable verwendet/missbraucht. Der einzige vernünftige einsatzzweck für n singleton ist meiner meinung nach zur resourcen kontrolle. Es darf nur eine Klasse geben die bestimmte ressourcen verteilt, dmit diese nicht zu oft verwendet werden. Aber für diesen static block seh ich kein wirklichen grund.
-
Einfaches Beispiel: eine statische Map die String-Icon-Paare (globale Ressource) enthält. Die füllt sich nicht von alleine, mit einem static Block ist das aber ganz einfach zu schreiben.