feixingfei

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
子类如果覆盖了父类的finalizer,子类应该手工调用父类的finalizer,应该放在finally里,以确保子类finalize时出异常时,父类finalizer仍被调用

利用匿名类,终结外围实体(enclosing instance),外围实体在一个private instance中存储一个reference,指向终结函数守卫者(finalizer guardian),于是,finalizer guardian在外部实体存在时也存在,当guardian被终结时,它执行外围实体所期望的终结动作。

public class Foo{

private final object finalizerGuardian = new Object(){

       protected void finalize() throws Throwable{

              //终结外围实体

}

}

}
posted on 2008-12-08 16:53  feixingfei  阅读(148)  评论(0编辑  收藏  举报