gpt4 book ai didi

java - 通过指针检测对象删除

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:30 24 4
gpt4 key购买 nike

请考虑以下代码:

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。我怎样才能做到这一点?

EDIT1:澄清一下,发布的代码有效,这不是问题所在。问题是当它指向列表中的对象被删除时,指针 selectedObject 没有更新。还有一件事,我无权访问从列表中删除对象的方法。

最佳答案

如果将 selectedObject 设为弱引用,则可以实现此目的:

WeakReference<someClass> selectedObject = null;

作业:

selectedObject = new WeakReference<someClass>(findObject(x, y));

查询:

someClass v = selectedObject.get();

如果项目从列表中删除(并且未被任何其他“指针”引用),selectedObject get() 方法将返回 null

关于java - 通过指针检测对象删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30461032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com