Java variabler Variablenname in Java

abraxus14

Cadet 4th Year
Registriert
Mai 2007
Beiträge
97
Hallo an alle,

weiß jemand von euch, wie man Variaben erzeugt, die erst zur Laufzeit entstehen. Und wie müsste ich solche Variablen syntaktisch richtig angeben, damit der Variablenname auch erst zur Laufzeit entschieden wird.
 
Soweit ich weiß gibt es sowas nicht zumindest Java und C#
Du kannst ein Array oder ArrayList verwenden.
 
Zur Laufzeit gibts keine Variablennamen, sondern nur Zeiger auf Bereiche, wo entsprechende Daten drinstehen.

Du solltest dich vielleicht genauer ausdrücken oder dein Problem schildern.
 
ja also ich weiss erst zur Laufzeit wieviel variablen erzeugt werden sollen, da dies von der eingabe abhängig ist. Ich weiss aber nicht wie man das macht ;)
Ich muss verschiedene Knoten aneinander hängen, deren anzahl und deren Struktur ist dabei von der Eingabe anhhängig. Ich muss also Knoten erzeugen und dann diese in eine Struktur einbetten. Dafür brauch ich aber Variablennamen. Ich weiss aber letztendlich nicht wie viel Namen ich da brauch. Die Anzahl sollte also eher unbeschränkt sein.
 
Zuletzt bearbeitet:
Ja, dann nimm ne ArrayList o.ä. Da kannst du Objekte rein schmeißen wie du lustig bist. Musst halt intern nur deine Objekte identifizierbar machen, sei es durch nen simplen Index oder sonstiges.
 
Ich weiß nicht so recht was du erreichen möchtest.

Eine Abbildung von Strings auf Objekte kannst du mit einer Map haben (z.B. HashMap). Dadurch kannst du mit dynamisch generierten Namen beliebige Objekttypen verwalten.

Wenn die Namen nicht wirklich erforderlich sind, und die Reihenfolge egal, dann kannst du natürlich auch effizientere Collections verwenden.
 
ah ok Danke! Also so was wie Knoten Knoten%i%= new Knoten() geht also nicht. Wobei i der fortlaufende Index ist.
 
Im Grunde schon, nur mit anderer Syntax. Ist es denn wichtig, dass du über einen Index an die Elemente kommst, oder ist die Reihenfolge beim schreiben/lesen egal?
 
Dann pack dein Objekt in ein Array - den Index kannst du auch verwenden. Ich finde es wäre die einfachere & elegantere Lösung.
 
DjNDB schrieb:
Im Grunde schon, nur mit anderer Syntax. Ist es denn wichtig, dass du über einen Index an die Elemente kommst, oder ist die Reihenfolge beim schreiben/lesen egal?
Es ist auf jeden Fall wichtig die Reihenfolge zu beachten und die Elemnete zuordnen zu können. Kennst du die entprechende Syntax für Java?
 
Mach doch einfach ein Array mit der Größe xy und bastelst dir eine Funktion, die bei jedem Einfügen prüft wie viel noch frei ist und wenn es voll ist erzeugst du ein größeres und speicherst um.
 
ja dann werde ich wohl die Arraylösung nehmen. Ein Object array, dass ich dann entsprechend caste.
 
Was sinnvoll ist kommt wirklich auf das konkrete Problem an.

Wenn du den Index z.B. in einer For-Schleife immer um 1 hochzählst, dann kannst du recht einfache Datentypen nutzen, die den Wert hinten an die Collection anfügen. Zum Beispiel Vector:

Code:
Vector<Knoten> vec= new Vector<Knoten>();
vec.add(new Knoten());

Wenn der Index beim einfügen frei wählbar sein soll, dann wird das etwas komplizierter. Bei einer List hätte man da dann Probleme, weil man keine leeren Indizes mitten drin haben kann.

Da würde ich dann eher an eine Map denken.

Code:
int i=1;
HashMap<Integer, Knoten> map= new  HashMap<Integer, Knoten>();
map.put(i,new Knoten());


Ob das nun für dein Problem gut ist oder nicht, steht auf einem anderen Blatt.

Codes sind frei nach schnauze getippt, also könnten Syntaxfehler drin sein.

P.S. Ein Vector ist ein dynamisch wachsendes Array. Du brauchst das Rad also nicht neu erfinden.
 
Zuletzt bearbeitet:
Zurück
Oben