tit*_*rat 4 java oop effective-java
所以我一直在经历"Effective Java 2nd Ed".
在第7项中,他谈到不使用终结器,因为它们可能会导致很多问题.
但是,我们不是使用终结器,而是"提供一种显式终止方法",其中一个例子就是密切语句.我不明白什么是"终止声明,它们和终结者之间有什么区别?
我得出结论,终止一个对象就像归零一样,因此资源被释放.但我想我不太了解它的区别.所以我感谢任何帮助.
谢谢 !
但是,我们不是使用终结器,而是"提供一种显式终止方法",其中一个例子就是密切语句.
作者提到了一种close()方法,该方法提供了一种清理使用资源释放的对象的方法.
例如,当您创建和操作a InputStream或an时OutputStream,您不希望依赖Java终结器(这些接口的某些子类可能存在.例如FileInputStream定义finalize()方法的类就是这种情况)来释放资源与流关联,但您希望使用API提供的方法来执行此操作:void close()因为它作为终结器更可靠.
java.sql.Statement以相同的方式工作:它提供了close()一种释放与语句实例关联的JDBC资源的方法.
我得出结论,终止一个对象就像归零一样,因此资源被释放.
分配对象null不必释放应该释放的所有资源.此外,如果对象或对象的字段仍被另一个生物对象引用,则该对象将难以被垃圾收集.
最后,收集垃圾可能还需要一段时间.
如果我们不需要使用该对象,为什么还要等待?