globales object, das automatisch erzeugt wird
-
Wie kann ich in Java ein globales Objekt automatisch beim Start der Applikation instanzzieren lassen.
Hab an folgende gedacht
public class GlobalClass { static GlobalClass globalClass = new GlobalClass(); public GlobalClass() { super(); System.out.println("hallo"); // TODO Auto-generated constructor stub } }
Der Konstruktor soll ausgeführt werden, ohne dass dass die Klasse im sonstigen Code irgendwie explizit angesprochen wird. Sie soll nur im classpath sein. Ggf. könnte ich noch irgendwo ein import-Statement unterbringen.
Bei obigem Beispiel wird die statische Variable globalClass anscheinend erst angelegt, wenn ich einmal explizit ein Objet von GlobalClass erzeuge.
-
kartoffelsack schrieb:
Bei obigem Beispiel wird die statische Variable globalClass anscheinend erst angelegt, wenn ich einmal explizit ein Objet von GlobalClass erzeuge.
Sie wird dann angelegt, wenn du zum ersten mal GlobalClass benutzt, also ein Objekt erzeugst, oder eine statische Methode aufrufst. Warum willst du das früher haben?
-
Warum willst du das früher haben?
hat sich eigentlich erledigt. Aber interessieren täts mich trotzdem. Geht das nicht früher? Wie in C++ wo die globalen Objekte erzeugt werden, bevor die Main-Funktion ausgeführt wird. Klar, ist in java anders, da es mehrere Main-Funktionen geben kann und das ganze linken dynamisch gemacht wird ...
-
Nein, geht nicht früher. Der class loader lädt die Klassen nur bei Bedarf, sonst wäre es uferlos mit dem ganzen Java API und was sonst noch im classpath liegt.
-
Meiner Meinung nach kann man folgendes machen:
public class GlobalClass { static GlobalClass globalClass; static { globalClass = new GlobelClass(); } }
-
Funktioniert das wirklich mit dem static-Block immer?
Oder wird der erst ausgeführt, wenn eine Klasse geladen wurde...
-
StaticBlock schrieb:
Oder wird der erst ausgeführt, wenn eine Klasse geladen wurde...
Der wird erst ausgeführt, wenn die Klasse geladen wird.