我想我没有正确理解java与对象引用一起工作的方式。在这里,我已经意识到东西问题的例子是行不通的,因为我想:Java对象引用问题
public void UnequipObject(int index) {
UsableItem ui = null;
if(index == 0) ui = item1;
else if(index == 1) ui = item2;
else if(index == 2) ui = item3;
if(ui != null)
{
int itemId = ui.GetId();
State.Instance().AddItem(itemId, 1);
ui = null;
}
}
功能unequip一个字符的对象(我正在开发一个视频游戏)。每个角色最多有三个对象。为了使它更通用,使用给定的索引,可以解除该对象。为此,我在UI中复制我想解开的对象,以便对其进行更改。国家在这里并不重要。关键是,当我做“ui = null”的分配时,它被认为原来的对象也是空的,因为我认为在将对象分配给ui的那一刻,两者都是相同的参考,你可以编辑任何两个变化将同时影响两个...
有没有人可以帮我解决这个错误?谢谢!
您只是将两个引用中的一个置空,另一个仍然有效。在任何两个引用上调用方法都会改变原始对象中的数据(这两个引用都是)。 – 2013-03-10 00:21:36