给出以下代码:
Rect pos = new Rect();
for (int i = 0; i < mCols; i++) {
pos = mTiles[1][i].getmPos();
pos.top = pos.top - size;
pos.bottom = pos.bottom - size;
mTiles[0][i].setmPos(pos);
}
我想做的是从中获取值(value)
mTiles[1][i].mPos
修改并设置
mTiles[0][i].mPos
问题出在这个语句
pos = mTiles[1][i].getmPos();
正在复制对象的引用,而不是对象的值。意思是,当我修改 pos.top 或 pos.bottom 时,原始对象也会被修改。
我猜我在这里缺少通过引用传递对象与值传递对象的概念......我认为我理解了。这里的修复是什么?我定义自定义类的方式有问题吗?
谢谢。
最佳答案
您需要一个临时 Rect 来更改值,并且仅分配值,而不是整个对象:
Rect pos;
for (int i = 0; i < mCols; i++) {
pos = new Rect();
pos.top = mTiles[1][i].getmPos().top - size;
pos.bottom = mTiles[1][i].getmPos().bottom - size;
mTiles[0][i].setmPos(pos);
}
关于java - 更改变量会影响间接变量(值与引用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3799697/