请考虑下面的代码:通过指针检测对象删除
ArrayClass<someClass> list = new ArrayList<someClass>();
//Consider this list has been filled somewhere else
someClass selectedObject = null;
public void userAction(float x, float y){
selectedObject = findObject(x, y);
}
public someClass findObject(float x, float y){
for(int i=0; i<list.size(); i++)
if(--objects match--)
return list.get(i);
return null;
}
的问题是,我使用的selectedObject别的地方,我需要知道它所指向的对象仍然存在。我注意到,当selectObject指向的列表中的对象被删除时,selectedObjects会保留它用来指向的对象的属性(该对象不再存在)。一旦对象从列表中删除,我需要selectedObject指向null。我怎样才能做到这一点?
编辑1:澄清,发布代码的作品,这不是问题。问题在于指针selectedObject在它指向列表中的对象被删除时未被更新。还有一件事,我无法访问从列表中删除对象的方法。
我没有看到你的代码的任何问题 - 它只是你的逻辑问题。你在哪里说把对象设置为null?你所描述的既是有效的,也是可以实现的,但是没有看到你现在正在做什么,我不能告诉你,如果你做错了。 – Aify
您需要将对象的删除和selectedObject的保留封装到一个类中。从列表中删除对象的方法还需要检查它是否是当前选定的对象,并且如果是这种情况,则将字段'selectedObject'设置为null。 –