在类中删除此对象
private class Node { Item name; Node next; public void deleteObject() { this = null; } }
是否可以删除类中的对象? 我试图在上面做,但它给出了一个错误,左侧应该是一个变量。 Node
是内部类。 谢谢。
编辑: var1
和var2
引用了这个类的对象,当我通过执行var1 = null
删除var1
时,我希望var2
也会被删除。
不,那是不可能的。 也没有必要。
只要无法从其中一个根对象访问,该对象就有资格进行垃圾收集(有效地解除分配)。 基本上自我引用并不重要。
只是确保你永远不会存储对你不再使用的对象的引用,其余的将由垃圾收集器处理。
关于你的编辑:
编辑: 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).
不,您无法删除this
对象或将其标记为同一类中的垃圾回收。
而且this
不是一个变量,你不能在表达式左侧有关键字,所以编译错误。
不可能。 您应该在“NodeManager”之类的东西中收集节点,然后从这个“管理器”中删除节点。
例如,如果您创建节点列表。 您可以从列表中删除该节点。 显然,List将包含第一个节点和一系列方法,并且它们之间有deleteNode。
请参见LinkedList