有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java购物车数组列表

我对java非常陌生,我目前正在设计一个购物车,允许您向其中添加prodcuts并显示购物车中的内容

目前,我创建了如下数组列表:

final ArrayList<Object> cart = new ArrayList<Object>();

然后,我将一个对象“hats”添加到购物车中

hats Hat1 = new hats ("Hat",orderprice,colourtext,quantitynum,sizetext);

cart.add(Hat1); .

我的问题是如何让数组显示帽子及其属性

干杯


共 (3) 个答案

  1. # 1 楼答案

    My question is how do I then get the array to display the Hat and its attributes?

    像下面这样吗

    final ArrayList<Object> cart = new ArrayList<Object>();
    Hat hat =(Hat) cart.get(0);
    hat.getWatever();
    

    然而,我强烈建议你用帽子的数组列表而不是对象

     final ArrayList<Hat> cart = new ArrayList<Hat>();
    hats Hat1 = new hats ("Hat",orderprice,colourtext,quantitynum,sizetext);
    cart.add(Hat1); .
        Hat hat =cart.get(0);//notice don't need to cast
        hat.getWatever();
    
  2. # 2 楼答案

    这一行:

    final ArrayList<Object> cart = new ArrayList<Object>();
    

    很可能是错误的,除非您确实希望ArrayList包含任何和所有对象类型。如果您只是将hats放入ArrayList,那么根据您给出的代码,它应该是:

    final ArrayList<hats> cart = new ArrayList<hats>();
    

    。。。尽管我建议更改命名以遵循Java约定,但类应该以大写字母开头,变量以小写字母开头,而不是相反

    然后,您可以通过对ArrayList对象调用get()方法来检索hats,该方法将返回类型为hats的对象

    如果出于某种原因确实需要泛型类型为Object,那么可以对get方法执行强制转换:

    hats myHat = (hats)cart.get(0);
    

    。。。但从编码的角度来看,这要糟糕得多,而且与选择正确的泛型参数相比,它提供的类型安全性要低得多

  3. # 3 楼答案

    首先,我建议您永远不要将Object用作集合的通用参数(真正需要它的情况除外)

    因此,您将有一个帽子列表:

    ArrayList<Hats> cart = new ArrayList<Hats>();
    

    如果你想对整个Hats对象集合做些什么,你必须创建一种容器类来实现与整个集合相关的逻辑,因为ArrayList类不具备这种逻辑

    因此,我建议您创建一个类Cart,它将包含一个Hats和方法列表,以及您希望应用于整个Cart项目集合的逻辑

    例如:

    public class Cart {
        private ArrayList<Hats> _hats = new ArrayList<Hats>();
    
        public List<Hats> getHats
        {
            return _hats;
        }
    
        public Cart()
        {
    
        }
    
        public void DoSomthingWithCart()
        {
            .....
        }
    }
    

    在这个类中,hats将包含您的购物车项目,在DoSomthingWithCart方法中,您应该实现您的购物车逻辑

    如果你这样做,你的购物车将有一个单独的类,包含对象集合和购物车逻辑