例如,我有一个名为Boxcar的自定义类,使用如下:
public Boxcar(String c, int u, boolean r)
在另一个类中,我初始化一个名为train的Boxcars的ArrayList,如下所示:
private ArrayList<Boxcar> train = new ArrayList<Boxcar>();
我遇到的问题是,我需要为列车中的每个Boxcar更改String c。我想我每个循环都需要一个,所以我现在拥有的是:
public void setCargo(String replace)
{
for(Boxcar b: train)
{
b = new Boxcar(replace);
}
}
当然不能编译,因为它需要int u和boolean r的值。我怎样才能访问String c?对于noobish编程很抱歉,我希望我足够具体。
答案 0 :(得分:1)
for
循环中的代码不会更改列表中的任何内容。它只是将新车分配给局部变量b
(前提是它正确地称为构造函数),保持数组列表不变。
你想要的是改变Boxcar
个对象的值,你通常会用setter做这个值:
for(Boxcar b: train) {
b.setC(replace);
}
这假定您的Boxcar
班级有吸气剂和制定者:
public Boxcar(String c, int u, boolean r){
//constructor code
}
public getC(){
return this.c;
}
public setC(String c){
this.c = c;
}
答案 1 :(得分:0)
标准做法是让类中的getter / setter用于您希望获取的变量,或者在实例化该类的对象后更改。
所以在Boxcar
课程中你会有类似
public int getU() {
return u;
}
public void setU(int newValue){
this.u = newValue;
}
然后,您可以将变量u
保密,同时仍然可以通过这些getter和setter进行访问。
然后,您可以使用for
循环来循环浏览ArrayList
Boxcars
并调用setter方法,以获取您希望更改的值,并相应地执行此操作。
作为旁注,我建议您将c
,u
和r
的变量名称更改为更人性化的内容,因为这些内容并未说明这些内容是什么价值观意味着