在类中删除此对象

时间:2012-08-23 10:50:31

标签: java class

private class Node
{
    Item name;
    Node next;

    public void deleteObject()
    {
        this = null;
    }
}

是否可以删除类内的对象?我试图在上面做,但它给出了一个错误,左侧应该是一个变量。 Node是内在的类。谢谢。

修改 var1var2引用了此类的对象,当我通过var1删除var1 = null时,我希望var2也会被删除。< / p>

3 个答案:

答案 0 :(得分:9)

不,那是不可能的。也没有必要。

只要无法从其中一个根对象访问,该对象就有资格进行垃圾收集(实际上已取消分配)。基本上自我引用并不重要。

请确保您永远不会存储对您不再使用的对象的引用,其余的将由垃圾收集器处理。

关于你的编辑:

  

编辑: var1和var2引用了这个类的对象,当我通过执行var1 = null删除var1时,我希望var2也会被删除。

您无法强制其他对象删除其引用。你必须明确告诉其他对象这样做。例如,如果您正在实现链接列表(如您的示例中所示),我建议您添加prev引用并执行以下操作:

if (prev != null)
    prev.setNext(next);  // make prev discard its reference to me (this).

if (next != null)
    next.setPrev(prev);  // make next discard its reference to me (this).

答案 1 :(得分:0)

不,您无法删除this个对象或将其标记为同一类中的垃圾回收。

并且this不是变量,您不能在表达式的左侧使用关键字,因此编译器错误。

答案 2 :(得分:0)

不可能。您应该在“NodeManager”之类的东西中收集节点,然后从这个“管理器”中删除节点。

例如,如果您创建节点列表。您可以从列表中删除该节点。显然,List将包含第一个节点和一系列方法,并且它们之间有deleteNode。

请参阅LinkedList