2012-08-23 55 views
4
private class Node 
{ 
    Item name; 
    Node next; 

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

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

编辑: var1var2具有参考这个类的对象,当我做var1 = null删除var1,我想这var2也会被删除。

+0

为什么要这么做? – assylias

+0

你是什么意思删除?你的意思是解除参考?您不能从其内部取消引用对象。 – Dan

+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). 
+0

我编辑了我的问题,你能看看吗?谢谢。 –

+1

已经做到了:-) – aioobe

0

不,你不能删除this对象或将其标记为同一班级的垃圾收集。

this不是一个变量,你不能在表达式的左边有关键字,所以编译器错误。

0

是不可能的。你应该像“NodeManager”那样收集节点,然后从这个“管理器”中删除节点。

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

请参阅LinkedList