Stellen Sie die Globale Instanz der Klasse JAVA
In diesem code, den ich versuche zu machen Globale Instanz der Klasse, damit alle Methoden können verwendet werden:
public static void clip(){
while(!Display.isCloseRequested()){
glClear(GL_COLOR_BUFFER_BIT);
if(character.gravity)character.y++; //there is an error, it says "Variable character does not exist"
Display.update();
Display.sync(70);
}
}
public static void initGame(){
entity character = new entity(); //I want to use this in method clip()
character.create(true, "box", true);
}
Ich habe google gesucht, aber auf meine Frage "Stellen Instanzen der Klasse global" nichts gefunden.
Danke für die Hilfe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine solche Sache wie eine "Globale variable" in java.
Allerdings können Sie erklären
character
als Klasse variable, indem er erklärt:außerhalb von Methoden nur auf der Gültigkeitsbereich der Klasse.
Sowas:
Mehr info auf Klassenvariablen können in der offiziellen Dokumentation.
Als eine Seite Knoten, eine Klasse sollte nicht benannt werden
entity
, da java eine starke Konvention, dass die Klassen-Namen sollten beginnen immer mit Großbuchstaben, Sie sollten benennen Sie diese KlasseEntity
.Wenn Sie möchten, eine globales Objekt für eine Klasse, Sie können einen Singleton wie folgt.
Nun können Sie auf die "Globale" Instanz:
getInstance()
synchronized
Um eine Instanz einer bestimmten Klasse global zu Ihrem Programm, eine Lösung ist das Singleton-Muster. Es funktioniert in der folgenden Weise:
Dann können Sie die eindeutige Instanz der Klasse Entity, von wo auch immer in den code von:
Erstellen singleton-Instanz der globalen Klasse, und fügen Sie statische Instanz-getter für Sie. Später in jedem Stück von deinem code werden Sie in der Lage, Ihre Instanz und rufen jede öffentliche Methode der Klasse. Alternativ, wenn Sie nicht brauchen, singletons, benutzen Sie einfach die statische Methode.
In Java alle Objekte sollten entweder Variablen oder member einer Klasse, obwohl Sie statische Mitglieder. C-style-globals gibt es nicht.
So, in Ihrem Fall, um die
character
von überall zugänglich ist, sollten Sie schreiben:Und, sofern der code oben ist aus der Klasse
MyClass
, und den folgenden code aus einer anderen Klasse:Diesem wird gesagt, dieser code (dessen design eigentlich) sollte verbessert werden, da es absolut nicht Objekt-orientiert. Wie dieser ist eine weitere Frage, die ich nicht näher auszuführen hier aber vorschlagen, dass Sie weiter zu untersuchen, OOP-standards und best practices.