-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)

创建一个新的 Card 对象进行存储。我该如何解决这个问题?

4

1 回答 1

1

您似乎过度使用“静态”。如果一个字段被声明为静态,则该类的所有实例共享相同的副本,因此具有相同的值。检查您在 Card 类中查看的字段是否声明为“静态”,如果是,请将其删除。

于 2013-07-07T00:00:18.753 回答