5.经常从finalize ()中调用super.finalize () 这里的finalize ()是java在进行垃圾收集的时候调用的,和finally不一样。如果你的父类没有定义finally()的话,你也应该调用。这里有两个原因:(1)在不改变代码的情况下能够将父类的finally方法加到你的类中。 (2)以后你会养成习惯调用父类的finally方法,即使父类没有定义finally方法的时候。 正确的方法应该如此: public class parentFinalize 参考:"The Java Programming Language" by Ken Arnold and James Gosling, page 49. 6.不要在finalize ()中注销listeners 不要再finalize ()方法中中注销listeners,finalize ()只有再没有对象引用的时候调用,如果listeners从finalize()方法中去除了,被finalize的对象将不会在垃圾收集中去除。 public void finalize () throws Throwable 7.不要显式的调用finalize ()方法 虽然显式的调用这个方法可以使你确保你的调用,但是当这个方法收集了以后垃圾收集会再收集一次。 public class T7 对于这样的调用我们应该自己创建一个释放的方法,做最初finalize ()所作的事情,当你每次想显式的调用finalize ()的时候实际上调用了释放方法。然后再使用一个判断字段来确保这个方法只执行一次,以后再调用就没关系了。 public class T7 参考:Nigel Warren, Philip Bishop: "Java in Practice - Design Styles and Idioms for Effective Java". Addison-Wesley, 1999. pp.110-111 |
正在阅读:细述Java技术开发规则--基本篇细述Java技术开发规则--基本篇
2005-07-21 10:16
出处:
责任编辑:moningfeng
键盘也能翻页,试试“← →”键