尝试创建更多汽车实例,但是当我将它们添加到数组中时,它们将覆盖先前的实例,这是因为ArrayList位于我创建的每个实例中,所以最好创建一个包含ArrayList的清单类一切?
import java.util.ArrayList;
public class Automobile {
private String make;
private String color;
private int year;
private int mileage;
private ArrayList<Automobile> autoArray = new ArrayList<>();
public Automobile(String make,String color,int year,int mileage) {
this.make = make;
this.color = color;
this.year = year;
this.mileage = mileage;
autoArray.add(this);
}
//setters (mutators)
public void setYearModel(int y) {
year = y;
}
public void setMake(String type) {
make = type;
}
public void setColor(String col) {
color = col;
}
public void setMileage(int miles) {
mileage = miles;
}
public String toString() {
return "test = " + color + "; test " + year + "; test " + year + "; test " + make;
}
private ArrayList addVehicle(String m,String c,int y,int mile) {
this.make = m;
this.color = c;
this.year = y;
this.mileage = mile;
autoArray.add(this);
return autoArray;
}
public static void main(String[] args) {
Automobile cars = new Automobile("kelvin","luke",6,9 );
cars.autoArray.forEach(System.out::println);
cars.addVehicle("horny",9 );
cars.autoArray.forEach(System.out::println);
}
}
最佳答案
您需要在addVehicle()中创建一个新的Automobile,而不是修改现有的Automobile:
private ArrayList addVehicle(String m,int mile) {
autoArray.add(new Automobile(m,c,y,mile));
return autoArray;
}
那应该解决您的问题.但是,是的,理想情况下,您还应该按照其他注释者的建议重构代码,因为创建ArrayList< Automobile>在汽车的每个实例中.
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|