-3

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

目前我创建了一个这样的数组列表:

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

然后我将一个对象“帽子”添加到购物车

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

cart.add(Hat1); .

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

干杯

4

3 回答 3

1

这一行:

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

可能是错误的,除非您真的希望您ArrayList拥有任何和所有对象类型。如果您只是将帽子放入 ArrayList,那么您给出的代码应该是:

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

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

然后,您可以通过调用对象get()上的方法来检索帽子ArrayList,这将返回一个 type 的对象hats

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

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

...但是从编码的角度来看,这更糟糕,并且提供的类型安全性比选择正确的泛型参数开始时要少得多。

于 2013-05-30T13:47:49.253 回答
0

首先,我建议您永远不要将 Object 用作​​集合的通用参数(除非确实需要它)。

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

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

如果你想对整个 Hats 对象集合做一些事情,你将不得不创建一种容器类来实现关于整个集合的逻辑,因为 ArrayList 类不具备这样的逻辑。

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

例如:

public class Cart {
    private ArrayList<Hats> _hats = new ArrayList<Hats>();

    public List<Hats> getHats
    {
        return _hats;
    }

    public Cart()
    {

    }

    public void DoSomthingWithCart()
    {
        .....
    }
}

在此类 _hats 中将包含您的购物车项目,在 DoSomthingWithCart 方法中您应该实现您的购物车逻辑。

如果您采用这种方式,您的购物车将拥有一个单独的类,其中包含对象和购物车逻辑的集合。

于 2013-05-30T14:11:25.460 回答
0

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

像下面这样的东西?

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

但是,我强烈建议您使用 Hat 而不是 Object 的数组列表。

 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();
于 2013-05-30T13:47:30.720 回答