我一般认为清理资源是在finally块中完成的,
最近,我在一个类中发现了这个特殊的代码片段,它覆盖了Object类的finalize()方法。
protected void finalize() {
try {
In.close();
Out.close();
socket.close();
}
catch (Exception e) {
//logger code here
}
}这是个好主意吗?相对于finally,finalize()的优势和劣势是什么
发布于 2009-12-04 07:51:08
终于来了。Finalize是不好的,因为它可能永远不会被调用。仅将finalize用作安全网。例如,InputStream应该有一个终结器,以便在应用程序忘记的情况下关闭流。但是,应用程序应该将其关闭。
如果是我,我也会在终结器中进行清理,并记录执行清理时的情况,然后在应用程序中跟踪忘记正确清理的代码。
https://stackoverflow.com/questions/1843905
复制相似问题