例如,如果我有很多变量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()),但它的效率非常低。最好使用集合并找到替代选项。