我有两个类,其中一个类包含一个ArrayList,其中有添加到购物车中的商品,另一个类打印购物车中的商品。由于ArrayList是私有的,我使用了一个getter从ArrayList中获取产品并在GUI类中打印它们,但它什么也没有返回。
到目前为止,我的实现是CartGUI.java
public void printCart() {
ShoppingCart shoppingCart = new ShoppingCart();
System.out.println("Products in cart: ");
for (Product p : shoppingCart.getCart()) {
System.out.println(p.getProductName());
}
}
字符串
ShoppingCart.java
private ArrayList<Product> cart = new ArrayList<>();
public ArrayList<Product> getCart() { return cart; }
型
我测试了ArrayList是否为空,但它不是。如果ArrayList设置为静态,我的代码似乎可以工作,但这不是必需的。
我认为使用Singleton可以解决这个问题,但这并不起作用。
编辑:我能够通过使用Singleton并将ShoppingCart的同一示例传递给CartGUI来解决这个问题。
3条答案
按热度按时间yws3nbqq1#
在你的
PrintCart()
方法中,你的ShoppingCart对象是用一个购物车示例化的,这个购物车有一个空的ArrayList产品。在你开始循环之前,你需要用一个setter填充这个购物车。aemubtdh2#
像这样尝试。无论
ShoppingCart
是否是静态的,这都可以工作。只需将ShoppingCart
示例传递给方法。字符串
但是在
ShoppingCart
类中使用getCart()
方法没有多大意义。getItems()
或getProducts()
可能更有意义。或者将
printCart
方法包含在ShoppingCart
类中,如下所示:型
6tdlim6h3#
我认为你每次都在printCart()中创建一个新的购物车。最好使用现有的购物车或将其传递给GUI类。在CartGUI.java中,将现有的ShoppingCart示例传递给printCart方法。
字符串
然后在CartGUI中调用printCart方法时传递现有ShoppingCart的对象。
型