在Java中,是否有一种优雅的方式可以将所有现有对象指针设置为null? 我想删除一个对象,但它在多个地方被注册为事件侦听器。
在Java中,是否有一种优雅的方式可以将所有现有对象指针设置为null? 我想删除一个对象,但它在多个地方被注册为事件侦听器。
对于这件事情没有什么优雅的方法。不要试图这样做,否则你最终会得到难以维护的代码。
Reference
类持有的引用在收集器确定要收集哪些对象时不计数。当然,监听器必须正确处理引用突然消失的情况。您还需要确保有些东西保留了常规引用,以使类保持存在的时间足够长。
请参考这个线程,了解软引用和弱引用之间的区别。 Java中软引用和弱引用的区别是什么?
几点说明:
在Java中,您无法控制对象的删除。这是垃圾回收器的工作。您可以指示GC进行垃圾回收,但这并不保证对象实际上会被删除。
实际上,当对象无法再被访问时,它才会被删除。如果您删除了对它的所有引用,那么就无法再访问它了。
使用Java,您无法使用引用来执行该操作。但是您可以创建一个确定性的Dispose
方法,像.NET的IDisposable
一样清空引用中的值。