首页 > 解决方案 > 将相同的对象添加到数组

问题描述

为什么最后一个对象只存储在我的数组中?请帮忙。

这是我创建对象的主要方法。

public class Main {

public static void main(String[] args) {
    Service sv = new Service();

    Product pd1 = new Product();
    pd1.setName("Apple");
    pd1.setCategory("Perishable");
    sv.addProduct(pd1);

    Product pd2 = new Product();
    pd2.setName("Banana");
    pd2.setCategory("Perishable");
    sv.addProduct(pd2);

    Product pd3 = new Product();
    pd3.setName("Flour");
    pd3.setCategory("Nonperishable");
    sv.addProduct(pd3);

    Product pd4 = new Product();
    pd4.setName("Mani");
    pd4.setCategory("Nonperishable");
    sv.addProduct(pd4);

    Product pd5 = new Product();
    pd5.setName("Mango");
    pd5.setCategory("Perishable");
    sv.addProduct(pd5);

    sv.reviewProduct();

}

}

public class Service {  
Product[] myProduct = new Product[10];  

public void addProduct(Product p) {
    for(int i = 0;i<myProduct.length;i++) {
        //myProduct[i] = new Product();
        myProduct[i] = p;   
    }
}

public void reviewProduct() {
    //for(int i=0;i<myProduct.length;i++) {
    System.out.println(myProduct[1].getName());
    System.out.println(myProduct[1].getCategory());
    //}
}
}

标签: arraysoopobject

解决方案


您的addProduct函数会覆盖数组中的先前元素,因为它用相同的元素填充数组。

您应该改用List,并将add元素放入其中。如有必要,您可以稍后将其转换为数组。


推荐阅读