编程语言
首页 > 编程语言> > 私有变量在类之外被修改 – Java

私有变量在类之外被修改 – Java

作者:互联网

我正在循环一些数据,创建一个ArrayList< ArrayList< Cell>>每一步.每个Cell类都存储一行和col(以及其他内容).

我的问题是,当我之后调查我的listOfCells时,每个Cell对象都有相同的行(myData的最后一行.这只发生在行中,列应该是它们应该的(也就是说,它们本身是唯一的).可以看出,行正在递增,但是当它正确时,它会更改listOfCells中行的所有值.

我不知道是什么造成了这个.

创建Cell

Cell cell = null;
int row = 0;
int col = 0;
ArrayList<Cell> tmpCellList = new ArrayList<Cell>();
ArrayList<ArrayList<Cell>> listOfCells = new ArrayList<ArrayList<Cell>>();    

for (ArrayList<double> eachRow : myData) {
    row++;
    for (double eachCol : eachRow) {
        col++;
        cell = new Cell();
        cell.setCol(col);
        cell.setRow(row);
        cell.setValue(eachCol);
        tmpCellList.add(cell);
    }
    listOfCells.add(row-1, tmpCellList);
 }

细胞类

public class Cell {
    private int row;
    private int col;
    private double value;

public void setRow(int rowIn)   {
    this.row = rowIn;
}

public int getRow() {
    return row;
}

public void setCol(int colIn)   {
    this.col = colIn;
}

public int getCol() {
    return col;
}

    public void setValue(double val) {
            this.value = val;
    }

    public double getValue() {
            return value;
    }

解决方法:

您的所有行都是相同的ArrayList< Cell>.
因此,它们都包含相同的细胞.

您需要为每一行创建一个新的ArrayList< Cell>().

标签:java,private-members
来源: https://codeday.me/bug/20190826/1727593.html