Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我列表中的所有值都相同?_Java_Arraylist_Pass By Reference_Pass By Value - Fatal编程技术网

Java 为什么我列表中的所有值都相同?

Java 为什么我列表中的所有值都相同?,java,arraylist,pass-by-reference,pass-by-value,Java,Arraylist,Pass By Reference,Pass By Value,在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 <

在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));
        }   

    }

}
已在我的列表中调用的gets ever对象将变成要添加到列表中的最后一个对象的副本。我知道我通过引用传递对象,但我不明白为什么。我的申报不应该吗

new Card(i,j)

创建新的存储卡对象。如何解决此问题?

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

您认为我的列表中的字段将变成最后一个添加到列表中的对象的副本是什么意思?它应该并且确实创建了一个新的Card对象,这里有一些不同的错误,我想这是您的观察结果,到底是怎么回事?也许有些东西被声明为静态的,不应该。。。显示
Card
类的代码。可能是您的Card构造函数没有达到预期效果,也可能是您分辨不同实例的能力有缺陷。发布相关代码,我们拭目以待。
new Card(i,j)