[英]Removing a subclass object from parent?
我有一個靜態ArrayList
,其中包含VisibleObject
類型的所有對象。 所有VisibleObjects
也是BaseClass
的子類,可以作為許多類的父類。
我的問題是,正在調用VisibleObject
remove調用,但是由於某種原因,隨着大小的增加,它實際上並未從ArrayList
中移除。
現在VisibleObject
新時添加VisibleObject
創建。
這是問題代碼。
//Remove base class and visible object.
List<BaseClass> baseClassList = this.mBaseClassExtras;
Iterator<BaseClass> baseClassIterator = baseClassList.iterator();
while(baseClassIterator.hasNext())
{
BaseClass baseClass = baseClassIterator.next(); // must be called before you can call i.remove()
baseClass.update(delta);
if(baseClass.getIsCompleted())
{
if(baseClass instanceof VisibleObject)
{
if(VisibleObject.AllVisibleObjects.remove(baseClass))
{
Functions.out("VisibleObject removed.");
}
else
{
Functions.out("Failed to remove VisibleObject - Possible memory problems.");
}
}
//Remove the base class.
baseClassIterator.remove();
}
}
//BaseClass
if(mBaseClassExtras.size() > 0)
{
Functions.out(
"Is called, VisibleObjects array:" + VisibleObject.AllVisibleObjects.size() +
" | BaseClass size: " + mBaseClassExtras.size()
);
}
這是系統(部分)的輸出
06-15 06:49:36.793 9301-9301/com.youllneverknowmycompany.topsecretapp I/System.out﹕ OLLY_SYSTEM: VisibleObject removed.
06-15 06:49:36.793 9301-9301/com.youllneverknowmycompany.topsecretapp I/System.out﹕ OLLY_SYSTEM: Is called, VisibleObjects array:105 | BaseClass size: 11
06-15 06:49:36.825 9301-9301/com.youllneverknowmycompany.topsecretapp I/System.out﹕ OLLY_SYSTEM: Is called, VisibleObjects array:105 | BaseClass size: 12
06-15 06:49:36.857 9301-9301/com.youllneverknowmycompany.topsecretapp I/System.out﹕ OLLY_SYSTEM: VisibleObject removed.
06-15 06:49:36.857 9301-9301/com.youllneverknowmycompany.topsecretapp I/System.out﹕ OLLY_SYSTEM: Is called, VisibleObjects array:104 | BaseClass size: 11
06-15 06:49:36.893 9301-9301/com.youllneverknowmycompany.topsecretapp I/System.out﹕ OLLY_SYSTEM: Is called, VisibleObjects array:105 | BaseClass size: 11
06-15 06:49:36.925 9301-9301/com.youllneverknowmycompany.topsecretapp I/System.out﹕ OLLY_SYSTEM: Is called, VisibleObjects array:105 | BaseClass size: 12
06-15 06:49:36.977 9301-9301/com.youllneverknowmycompany.topsecretapp I/System.out﹕ OLLY_SYSTEM: VisibleObject removed.
我通過鏈式鏈接兩個類中同名的方法來解決此問題。 調用該方法時,它從存儲它的類中刪除了ArrayList項(靜態)。
然后轉到父類,並執行刪除自身的標准方法。 完美的作品!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.