第七条:避免使用终结方法

终结方法通常是不可预测的,也是很危险的,一般情况下是不必要的。

如果我们为一个类重写写了Object类的终结方法,那么这个类的实例在被垃圾回收器回收之前会先执行终结方法,

在终结方法中,这个实例对象有可能会被重写引用,也可以用来释放一些资源文件等等,从而不被回收或者对象的善后工作。

终结方法的缺点在与不能保证会被及时的执行。当一个实例对象变得不可达,到这个实例的终结方法被执行,这之间

的时间是任意长的。甚至Java语言规范不仅不能保证对象的终结方法被及时的执行,而且根本不能保证它们会被执行。

 

为了不使用终结方法,但是在对象回收之前,又释放对象中封装的资源(例如文件或者线程)。我们只需要提供一个显示的终结

方法,并要求客户端代码在对象不再有用的时候,调用显示的终结方法。

显示终止方法的典型例子就是InputStream ,OutputStream 和java.sql.Connection类中的close()方法。

显示的终止方法通常与try-finally结构结合起来使用,以确保及时终止。

posted @ 2015-04-20 14:59  wangliyue  阅读(132)  评论(0编辑  收藏  举报