我有一个Group数组。当我调用increment时,为了递增对象的id(在A中),数组中所有对象的所有ID都会递增。有谁知道为什么请?
Group [] groups = new Group [g];
groups[0] = group;
for (int i=1; i<g;i++){
groups[i] = groups[i-1];
groups[i].increment(); .......... A
}
public void increment() {
this.groupid = this.groupid++;
}
答案 0 :(得分:3)
for (int i=1; i<g;i++){
groups[i] = groups[i-1];
groups[i].increment();
}
数组的每个索引都引用相同的Group对象。
答案 1 :(得分:1)
因为您只是复制对数组所有元素的引用。所有元素都包含相同的Group实例,但引用不同。
您应该每次在循环中创建一个新的Group对象,或者使用复制构造函数。
答案 2 :(得分:1)
有两个问题。
首先,增量方法实际上不起作用。应该是:
public void increment() {
this.groupid++;
}
否则它实际上不会改变。
其他答案已经提到了第二个问题,即实际上只有一个Group对象和许多对该对象的引用。