2013-07-06 83 views
-2

在java中,我試圖用一堆不同的對象填充列表。但是發生的是,每當我向列表中添加另一個對象時,列表中的所有對象都變成了相同的東西。爲什麼我列表中的所有值都一樣?

有問題的代碼:

private static ArrayList<Card> deck = new ArrayList<Card>(); 

private static void setupDeck(){ 
    for(int i = 0; i < suits; i++){ 
     for(int j = 0; j < cards; j++){ 
      deck.add(new Card(i,j)); 
     } 

    } 

} 

deck.add(new Card(i,j)); 

被稱爲曾經在我的名單已經物體越來越變成了最後一個對象的副本獲得添加到列表中。我知道我通過引用傳遞對象,但我不明白爲什麼。不應該申報我的

new Card(i,j) 

創建一個新的存儲卡對象。我該如何着手解決這個問題?

+0

你在我的列表中是什麼意思變成最後一個對象的副本,以添加到list_? –

+1

它應該並且會創建一個新的Card對象,這裏有一些不同的錯誤,我想這是你的觀察,究竟是什麼錯誤? – luk2302

+5

也許某些東西被聲明爲靜態的,不應該顯示「Card」類的代碼。 – user000001

回答

1

您似乎在過度使用「靜態」。如果一個字段被聲明爲靜態的,則該類的所有實例共享相同的副本,並且具有相同的值。檢查你在Card類中看到的字段是否被聲明爲「靜態」,如果是,則將其刪除。

+0

是的,就是這樣。 – Moniker

相關問題