Java中奇怪的对象/类行为

时间:2011-03-06 00:26:43

标签: java arrays object

我有一个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++;
    }

3 个答案:

答案 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对象和许多对该对象的引用。