2013-05-30 41 views
-4

我很新的Java和即時通訊目前正在設計一個購物車,可以讓你添加prodcuts並顯示什麼在購物車。Java購物車陣列列表

目前,我創建這樣一個數組列表:

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

我再添加一個對象「帽子」到購物車

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

cart.add(Hat1); . 

我的問題是我怎麼再拿到數組來顯示帽子及其屬性?

乾杯

+0

如果你想要一個廉價的方法來做到這一點,請看看來自commons-lang的字符串反射。添加到你的帽子類,然後toString應該打印出所有的屬性。 – Steven

回答

0

我的問題是我怎麼再拿到陣列顯示Hat和它的屬性 ?

像下面這樣的東西?

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(); 
1

這條線:

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

是可能是錯誤的,除非你真的想你ArrayList舉辦任何和所有的對象類型。如果你只是把帽子到ArrayList中,然後通過他的代碼,你已經給它應該是:

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

...雖然我建議改變你的命名遵循Java約定,類應該開始一個大寫和小寫字母的變量,而不是相反。

然後,您可以通過在ArrayList對象上調用get()方法來返回帽子,該方法將返回hats類型的對象。

如果你確實需要的通用類型爲Object出於某種原因,那麼你可以做的get方法的轉換:

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

...那是從編碼的角度看難吃得多,和提供比選擇正確的通用參數少得多的類型安全性。

0

首先,我建議你永遠不要使用Object作爲集合的一個通用參數(除非是真正需要的情況除外)。

因此,你將有帽子的列表:

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

如果你希望做一些與帽子的整個集合對象,你將不得不創造一種容器類的來實現邏輯conserning全收,因爲ArrayList類不具備這樣的邏輯。

所以我建議你創建一個類Cart,它將包含一個帽子和方法列表,其中包含你想要應用到整個購物車項目集合的邏輯。

例如:

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

    public List<Hats> getHats 
    { 
     return _hats; 
    } 

    public Cart() 
    { 

    } 

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

在這個類_hats將包含您的購物車項目,並在DoSomthingWithCart方法,你應該實現你的車邏輯。

如果你將這樣做,你將有一個單獨的類爲您的購物車與對象和購物車邏輯的集合。