java-如何在不覆盖先前副本的类中向ArrayList添加对象

前端之家收集整理的这篇文章主要介绍了java-如何在不覆盖先前副本的类中向ArrayList添加对象 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

尝试创建更多汽车实例,但是当我将它们添加到数组中时,它们将覆盖先前的实例,这是因为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>在汽车的每个实例中.

原文链接:https://www.f2er.com/java/532885.html

猜你在找的Java相关文章