Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
in statischem Kontext auf nicht statische Variable beziehen
hi,
ich würde mich gerne in einem statischem Kontext (static void main methode) auf nicht statische Variable, die sich innerhalb der Klasse ändert beziehen, geht das überhaupt?
konkret:
Ich habe eine Hauptroutine in static void main, die verschiedene andrer Klassen initialisiert und das soll je nach Variablenwert, der sich innerhalb der Hauptklasse ändert geschehen.
> je nach Variablenwert, der sich innerhalb der Hauptklasse ändert
das klingt nach einer statischen Variable,
ist die Variable nicht statisch, dann musst du sagen
'je nach Variablenwert, der sich innerhalb irgendeines Objektes der Hauptklasse ändert'
und schon ist die Folge klar:
du brauchst irgendein bestimmtes Objekt der Hauptklasse,
dann kannst du mit
objektDerHauptklasse.variable
oder besser
objektDerHauptklasse.getVariable()
auf die Variable zugreifen
hi,
ich würde mich gerne in einem statischem Kontext (static void main methode) auf nicht statische Variable, die sich innerhalb der Klasse ändert beziehen, geht das überhaupt?
Nein, woher soll die statische Methode wissen, welche Instanz du gerade meinst.
tiffany hat gesagt.:
konkret:
Ich habe eine Hauptroutine in static void main, die verschiedene andrer Klassen initialisiert und das soll je nach Variablenwert, der sich innerhalb der Hauptklasse ändert geschehen.
öhhh......hmm....jetzt mach mal nicht aus nem guten menschen nen schlechte programmierer nur weils der einfachste weg ist....
alternativlösung:
erstelle in der static-class einen vector in der du alle referenzen der objekt-instanzen registrierst die erstellt werden. dann kannst du jederzeit daruaf zugreigfn. elegant wäre es dann wenn sich die instanzen im konstruktor an der statis-class registrieren (schau auch mal unter "singleton" nach!).
öhhh......hmm....jetzt mach mal nicht aus nem guten menschen nen schlechte programmierer nur weils der einfachste weg ist....
alternativlösung:
erstelle in der static-class einen vector in der du alle referenzen der objekt-instanzen registrierst die erstellt werden. dann kannst du jederzeit daruaf zugreigfn. elegant wäre es dann wenn sich die instanzen im konstruktor an der statis-class registrieren (schau auch mal unter "singleton" nach!).
Wenn du trotzdem mehrere Instanzen der Klasse anlegen lässt hat es nichts mehr mit singleton zu tun. Singleton heißt, dass es nur eine Instanz der Klasse geben darf. Das realisiert man normal nicht über den Konstruktor, sondern über eine getInstance-Methode, die schaut ob es schon eine Instanz der Klasse gibt. Wenn ja dann gibt sie diese Instanz zurück und wenn nicht dann ruft sie einen PRIVATEN Konstruktor auf und erzeugt die erste und EINZIGE Instanz der Klasse.