private class Node
{
Item name;
Node next;
public void deleteObject()
{
this = null;
}
}
是否可以删除类内的对象?我试图在上面做,但它给出了一个错误,左侧应该是一个变量。 Node
是内在的类。谢谢。
修改
var1
和var2
引用了此类的对象,当我通过var1
删除var1 = null
时,我希望var2
也会被删除。< / p>
答案 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