Is there any way to loop though variable names?

15,563

Solution 1

You can do it with reflection, if the variables are defined as members of a class. For method parameters or local variables it is not possible. Something similar to this:

Class currentClass = getClass();
Field[] fields = currentClass.getFields();
for (Field f : fields) {
  System.out.println(f.getName());
}

If you intend to change the value it becomes a bit more complicated as you also have to consider the type of the variable. E.g. you can assign a String to a variable of type Object but not the other way around.

Solution 2

I would suggest to go for an array if data type of variables are same. You can try something like that

        String[] Var = {"something","something2","something else"};
        for (String var : Var)
        {
        System.out.println(var);
        }

Solution 3

You can't loop through (local) variables. You can use an array or a List and then loop through its elements:

for (Object item : myListOfObjects) {
    // do the processing
}

Solution 4

As long as all the variables use the same type, you can use an Array to store all of them. Then you can use a for loop to iterate through the array. Something like this:

     String[] V = {"var1","var2","var3","var4","var5"};
    int arraylength = V.length;

    for(int i = 0; i<arraylength; i++){
        System.out.println(V[i]);
    }
Share:
15,563
Dane Brouwer
Author by

Dane Brouwer

they/them or he/him

Updated on June 08, 2022

Comments

  • Dane Brouwer
    Dane Brouwer almost 2 years

    So for example I have the following variables: Var1, Var2, Var3, Var4, Var5 - a total of 5 variables. All with unique data and I want to loop though them using a for loop.

    //String Var1 = something, Var2 = something etc..
    for (int i = 1; i <= 5; i++)
    {
    Var(i) = "something else";
    }
    //i.e I change Var(1), Var(2) etc.. to something else respectively.
    

    To clarify further, ultimately I want to apply this method to iterate through multiple components in my program. I have a large number of components with styled names(e.g. label1, label2, label3 etc..) and want to change the value of these components without having to individually set their value.

  • MartinTeeVarga
    MartinTeeVarga over 8 years
    I wonder why this is downvoted, since it's the only way to truly iterate through variables in Java.
  • rustyx
    rustyx over 8 years
    Gotta laugh at the -1's for the only proper solution.
  • Jeredriq Demas
    Jeredriq Demas almost 4 years
    Can I set variables to those class fields? IE, class has String point1, point2, point3; can I iterate through fields and set string?