簡體   English   中英

從父級刪除子類對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM