These all look appropriate to me. These finalizers protect against a program consuming system resources if a programmer forgets to call close and the object gets garbage collected. This is similar to the handling by java.io.FileInputStream and java.io.FileOutputStream see:
http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileOutputStream.html#finalize() All finalizers are not evil, though most of the time you should avoid them if you can. In a perfect world, these wouldn't be needed and people would always call close before the objects become unreachable. We all know the world isn't prefect and removing these could have serious negative consequences (running out of file handles) on programs that rely on these finalizers. Eric -----Original Message----- From: Otis Gospodnetic [mailto:[EMAIL PROTECTED] Sent: Friday, February 20, 2004 8:17 AM To: Lucene Developers List Subject: Lucene's finalizeable objects An interesting article from a person known to lucene-dev: http://www-106.ibm.com/developerworks/library/j-jtp01274.html I only skimmed the article, and only read the section about finalizeable objects. Lucene has several: $ ffjg finalize ./index/IndexWriter.java: protected void finalize() throws IOException { ./index/IndexReader.java: protected final void finalize() throws IOException { ./store/FSDirectory.java: protected final void finalize() throws IOException { ./store/FSDirectory.java: protected final void finalize() throws IOException { Then I read the following, and noticed the "FinalizeDoesNotCallSuperFinalize" rule: http://pmd.sourceforge.net/rules/finalizers.html Then I looked at Lucene's finalize() methods and noticed that none of them call super.finalize(). Now I'm wondering if they should. I don't know enough about it to make strong statements, only point this out to those who may know more, and can offer advice. Otis --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]