請考慮下面的代碼:通過指針檢測對象刪除
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。 –