4
private class Node
{
    Item name;
    Node next;

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

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

编辑: var1并且var2引用了这个类的对象,当我var1通过做删除时var1 = null,我希望它var2也被删除。

4

3 回答 3

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).
于 2012-08-23T10:52:59.840 回答
0

不,您不能this在同一类中删除对象或将其标记为垃圾回收。

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

于 2012-08-23T10:53:11.280 回答
0

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

例如,如果您制作一个节点列表。您可以从列表中删除节点。显然,List 将包含第一个节点和一系列方法,并且在这些方法之间存在 deleteNode。

链表

于 2012-08-23T10:54:29.583 回答