java - 终结者守护者

标签 java finalizer

我正在浏览 finalizer guardian example发布在 Stack Overflow 上,对此我有几个问题:

  1. 为什么我们需要创建一个 Guardian 对象?为什么不简单地覆盖终结器工作? (因为所有类都是 Object 类的子类)。

  2. Guardian 对象是在什么时候创建的?我假设它是在类加载期间。

  3. 我不理解正在创建的守护对象的语法。函数与变量声明一起声明。这个范式在 Java 中叫什么?

最佳答案

  1. 正确地覆盖 finalize() 当然会起作用。我相信监护人的技巧是确保即使您重写的 finalize() 没有调用 super.finalize(),监护人也在您的子类的终结器之前调用父级的终结器。

  2. 创建封闭对象实例时。监护人对象只不过是一个实例变量

  3. 那是匿名(内部)类。我相信大多数 Java 书籍或教程都涵盖了这一点。尝试使用“java anonymous class”谷歌会给你相当多的资源,例如http://docstore.mik.ua/orelly/java-ent/jnut/ch03_12.htm

关于java - 终结者守护者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14191735/

相关文章:

java - 从 HTML 中的多个 a 标签获取数据

c# - 关键终结器中的线程亲和性

java - Finalize 方法如何与 Java 中的幻像引用一起工作

c# - 使用Object Initializer的复活区别

.net - GC.SuppressFinalize 性能与不可终结对象相比

c# - IDisposable 与析构函数 : requires thread-safe implementation?

java - 从通过 servlet 动态上传的 jar 中加载类

Java 正则表达式 : Splitting based on multiple conditions with exceptions

java.lang.ClassCastException : class net. sf.json.JSONObject 无法转换为类 net.sf.json.JSONArray

java - 使用 MinGW 编译器和 nar-maven-plugin 避免依赖机器的 POM