4

我正在浏览Stack Overflow 上发布的finalizer Guardian 示例,对此我有几个问题:

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

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

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

4

1 回答 1

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

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

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

于 2013-01-07T08:12:46.077 回答