zoukankan      html  css  js  c++  java
  • effective java —— 终结方法守卫者

    目录:

    effective java —— 终结方法守卫者

    effective java 第2章:创建和销毁对象。第7条 : 避免使用终结方法。最后的“终结方法守卫者 (finalizer guardian)”的例子,以加深理解。

     1 /**
     2  * chapter 2——终结守卫者
     3  * @ClassName: Parent
     4  * TODO
     5  * @author xingle
     6  * @date 2015-3-11 下午3:49:47
     7  */
     8 public class Parent {
     9     
    10     public static void main(String[] args){
    11         doSth();
    12         System.gc();  
    13         try {
    14             Thread.sleep(2000);
    15         } catch (InterruptedException e) {
    16             e.printStackTrace();
    17         }
    18     }
    19 
    20     /**
    21      * TODO
    22      * @author xingle
    23      * @data 2015-3-11 下午3:51:02
    24      */
    25     private static void doSth() {
    26         Child c = new Child();
    27         System.out.println(c);        
    28     }
    29     
    30     private final Object guardian = new Object(){
    31         
    32         @Override
    33         protected void finalize(){
    34              System.out.println("执行父类中匿名内部类--终结方法守卫者,重写的finalize()");
    35              // 在这里调用Parent重写的finalize即可在清理子类时调用父类自己的清理方法
    36              parentlFinalize();
    37         }
    38     };
    39 
    40     /**
    41      * TODO
    42      * @author xingle
    43      * @data 2015-3-11 下午3:55:10
    44      */
    45     protected void parentlFinalize() {
    46          System.out.println("执行父类自身的终结方法");          
    47     }
    48 }
    49 
    50 class Child extends Parent {
    51 
    52     @Override
    53     protected void finalize() {
    54         System.out.println("执行子类finalize方法,注意,这里子类并没有调用super.finalize()");
    55         // 由于子类(忘记或者其他原因)没有调用super.finalize()
    56         // 使用终结方法守卫者可以保证子类执行finalize()时(没有调用super.finalize()),父类的清理方法仍旧调用
    57     }
    58 }

    执行结果:

  • 相关阅读:
    关于网络调试助手
    阿里云之设备连接方法学习
    阿里云学习
    Jquery ThickBox的使用
    推荐几款制作网页滚动动画的 JavaScript 库
    Javascript动态操作CSS总结
    css3动画属性系列之transform细讲scale缩放
    JS函数重载解决方案
    从Java开发者的视角解释JavaScript
    理解JavaScript中的事件路由冒泡过程及委托代理机制
  • 原文地址:https://www.cnblogs.com/xingele0917/p/4330182.html
Copyright © 2011-2022 走看看