Globale Variablen, bzw. Referenzen?
-
Hi,
ich weiß, es entspricht nicht dem Grundsatz von OOP, globale Variablen zu haben, aber ich mache grade ein Spiel, da brach ich einige globale Variablen, da sind einfach ein paar Spieleinstellugnen drin.
Im moment hab ich einfach noch eine Klasse, da sind alle Einstellungen (als booleans) drin gespeichert, allerdings kann ich aus einer anderen Klasse diese nicht direkt ansprechen: (GameVars ist eine Instanz der Klasse GameStruct)
src\MenuCanvas.java:89: non-static variable GameVars cannot be referenced from a static context
Ich könnte diese Klasse dem Konstruktor übergeben, so dass jede Klasse im Spiel Zugriff auf diese Speicherklasse hat, allerdings ist das nur eine Kopie, oder? Also in Java kann ich das mit den Referenzen und so nicht, wenn ich schon keine globalen Variablen haben kann, wäre es wenigstens gut, eine Referenz auf diese Klasse zu übergeben, weil wenn eine Klasse ein Wert ändert, müssen die anderen Klassen auch den geänderten Wert haben.
-
class Options { public int m_player = 3; }
Da benötigst du dann dort wo Options benötigt wird eine Instanz von Options. Damit alle auf die selbe Instanz zugreifen musst du alles static machen:
class Options { public static int m_player = 3; } ... Options.m_player++; // Geht
BTW: Globale Variablen funktionieren in Java sowieso nicht
MfG SideWinder
-
SideWinder schrieb:
BTW: Globale Variablen funktionieren in Java sowieso nicht
Ich habs befürchtet
Sowas meinte ich, mit static, im moment greifen die Klassen alle auf eine Instanz zu, aber ich war mir halt nicht sicher, ob das eine Kopie oder eine Referenz zu der Ursprünglichen Instanz war, aber mit dem static Zeug ist das egal...
-
TheToast schrieb:
Sowas meinte ich, mit static, im moment greifen die Klassen alle auf eine Instanz zu, aber ich war mir halt nicht sicher, ob das eine Kopie oder eine Referenz zu der Ursprünglichen Instanz war, aber mit dem static Zeug ist das egal...
1. Im Zusammenhang mit Objekten werden bei Java immer Referenzen verwendet. ...ganz Automatisch.
2. Vergiß den static-Mist. Der Versaut dir dein Programm ganz gewaltig, wenn du ihn so nutzt.
3. Unter Umständen könnte an einigen Stellen, wo du static nutzen möchtest, ein Singleton-Pattern angesagt sein, aber auch hier rate ich zu einem vorsichtigen Einsatz: Wenn du zu Programmstart 10 Singletons initialisieren mußt, die alle von einander abhängig sind, dann hast du, harmlos ausgedrückt, ein Problem.
-
Gregor schrieb:
1. Im Zusammenhang mit Objekten werden bei Java immer Referenzen verwendet. ...ganz Automatisch.
Dann ergibt sich das gaze ja. Danke