例如,如果我有很多变量 var1,var2,var3,.... 我如何使用索引轻松操作它们
for(int i=1,i<n;++i)
System.out.print(vari);
我知道这是不正确的,但我想知道是否有可能以这种方式操纵变量
例如,如果我有很多变量 var1,var2,var3,.... 我如何使用索引轻松操作它们
for(int i=1,i<n;++i)
System.out.print(vari);
我知道这是不正确的,但我想知道是否有可能以这种方式操纵变量
将它们添加到 List 或数组 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;
}
然后遍历 list\array 做一些事情:
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()),但是效率非常低。更好地使用集合,并找到替代选项。