小编ice*_*man的帖子

在循环中的 ArrayList.add() 之后,所有元素都相同。为什么?

如果我这样做 [quasi-java-code]:

while (loop)
{
    localObject = getDataForObject();
    globalPublicStaticArrayList<Object>.add(localObject);
}
Run Code Online (Sandbox Code Playgroud)

globalPublicStaticArrayList 中的所有元素都是相同的,等于添加的 localObject 的最后一个副本。我逐步完成调试器中的循环,看到一旦添加了一个对象,它就会被复制到 globalPublicStaticArrayList 的所有元素中。

我找到的解决方法是:

while (loop)
{
    localObject = getDataForObject();
    globalPublicStaticArrayList<Object>.add(new Object(localObject.member1, localObject.member2,...));
}
Run Code Online (Sandbox Code Playgroud)

它与Java中的传递引用有关吗?为什么在第一种情况下元素是相同的?谢谢。

java android arraylist

2
推荐指数
1
解决办法
3049
查看次数

标签 统计

android ×1

arraylist ×1

java ×1