String als Variablenname

KarlPichler

Mitglied
Hallo liebes Forum,

Meine Frage an euch lautet:

Ich habe eine Stuktur mit 120 Einträgen und zwei Instanzen davon.
Nun möchte ich die Variablen der ersten Struktur auf die zweite kopieren.

Code:
        // ***** anlegen der zwei Strukturen
	public static WeldingProgram gSt_values_work;
	public static WeldingProgram gSt_values;
        // ****   ende

       gSt_values_work.val1 = gSt_values.val1
       gSt_values_work.val2 = gSt_values.val2
       gSt_values_work.val3 = gSt_values.val3
       gSt_values_work.val4 = gSt_values.val4
       ....

Schön und gut, funktioniert einwandfrei. Allerdings wie oben erwähnt habe ich 120 Einträge und Ihr könnt euch vorstellen das der Code einigermaßen schnell lang und unüberischtlich wird.

Gibt es eine Möglichkeit diese Variabelnnamen in ein StringArray zu schreiben?

Mein Wunsch- Code würde folgendermaßen aussehen

Code:
        // ***** anlegen der zwei Strukturen
	public static WeldingProgram gSt_values_work;
	public static WeldingProgram gSt_values;

        public String[] vars = new String[120];
        // ****   ende


       private void initVarArray()
       {
              vars[0] = "val1";
              vars[1] = "val2";
              vars[2] = "val3";
              vars[3] = "val4";   
              ....  
       }


       private void copyArray()
       {
              for(int i = 0; i <= vars.length; i++)
              {
                  gSt_values_work. +  vars[i]  = gSt_values. +  vars[i] 
             }
       }

Bitte um Hilfe. Ich weis der Code schaut nicht sehr professionell aus, aber ich habe keine Ahnung und keinen Ansatz! ;)

Danke
 
Hi,

so wie Du dir das vorstellst, geht das leider nicht.

Du könntest das Ganze aber mit einem Array oder einer Liste lösen - in die Richtung geht dein geposteter Code-Ansatz eh schon.

Gruß
Martin
 
Auf Reflection würde ich persönlich so weit wie möglich verzichten. Es gibt Situationen, in denen es nicht anders geht, diese hier gehört aber sicherlich nicht dazu.

EDIT:
Vor allem würde Reflection nicht verhindern, dass man die eine Million Variablen anlegen müsste. Schon deswegen bietet es sich nicht, sondern Arrays/Listen.
 
Zuletzt bearbeitet:
Hi,

erstmal danke für deine Antwort.

Wie soll des den gehen?

Hast du ein Code Beispiel. Ich kann es mir noch nicht ganz vorstellen!

Danke!

LG
 
@sheel: Man lernt nie aus :D Danke für den Hinweis!

@KarlPichler: ich meinte damit, dass du statt deinen ganzen
Java:
gSt_values_work.val1
gSt_values_work.val2
...
ein Array machst, das in etwa so aussieht:
Java:
GST_values[] gSt_values_work = new GST_values[120];
und dann eben auf die einzelnen Einträge über den Arrayindex zugreifst, was sich wunderbar in einer for-Schleife realisieren lässt
Java:
for(int i=0; i<gSt_values_work.length; i++)
gSt_values_work[i] = gSt_values[i];

Gruß
Martin
 

Neue Beiträge

Zurück