我有一个静态的Products List类型。当我从Shopowner类填充此列表时,它可以正常工作,但是当我编译Customer.java时,该列表返回空白集。为什么填充列表不保留?

class Products {

    String name;
    int itemcode;
    Products(){}
    static List <Products> list = new ArrayList<Products>();
    Products(String name,int itemcode)
      {
        this.name=name;
        this.itemcode=itemcode;
      }
    public String toString()
    {return (name+""+itemcode);}
}

class Shopowner {
  public static void main (String ...at)

{
        Products o = new Products("Shamppo",12);
        Products.list.add(o);
        Products o1 = new Products("choco",1112);
        Products.list.add(o1);
           System.out.println(Products.list); //prints fine
}
    }

 class Customer {
                public static void main (String args[])
            {
           System.out.println(Products.list);   //prints []
           }
}


输出(编译Customer.jav时)

  []

最佳答案

请参阅下面的部分代码:

public static void main (String ...a)
{
Products o= new Products("Chocolate");
o.addToList();
Products o1= new Products("Icecream");
o1.addToList();
new Products().showList(); //This line is the culprit


您要在对象o和o1中添加列表,并且要在另一个对象上调用showList(),完全是new Products()。showList();?

注意:
它适用于静态列表,因为它在您的Product类的所有对象之间共享,而非静态列表则不是这种情况。

08-27 09:34