如何在 java 变量本身中制作变量的名称



例如,如果我有很多变量var1,var2,var3,....如何使用索引 i 轻松操作它们

for(int i=1,i<n;++i)
    System.out.print(vari);

我知道这是不正确的,但我想知道是否有可能以这种方式操纵变量

将它们添加到列表或数组 YourClass[] 中,并像这样遍历它们:

List<Cat> catsList = new ArrayList<>();
Cat[] catsArray = new Cat[3]; //alternatively
public CatHouse(){
    Cat bob = new Cat();
    Cat fluffy = new Cat();
    Cat tom = new Cat();
    catsList.add(bob);
    catsList.add(fluffy);
    catsList.add(tom);
    //alternatively
    catsArray[0] = bob;
    catsArray[1] = fluffy;
    catsArray[2] = tom;
}

然后遍历列表\数组以执行某些操作:

public void groomAll(){
    for (Cat cat : catList){
       cat.groom();
    }
    //alternatively
    for (Cat cat : catArray){
       cat.groom();
    }
}

有什么理由不使用集合吗?例如,数组、列表甚至地图。

我的答案是使用这些结构之一,否则我不相信有更简单的方法。

我能想到的最接近的事情是这样的:

Map<String, Object> map = new HashMap<>();
for(int i=1; i<map.size(); i++) {
    System.out.println(map.get("var"+i));
}

如果 vari 是局部变量,则不可能。如果vari都是类的成员,那么你可以使用Reflection API来完成它(参见方法Class.getField()和Class.getDeclaredField()),但它的效率非常低。最好使用集合并找到替代选项。

最新更新