1

在 Joshua Bloch 的书“Effective Java”第 7 条第二版中,他建议避免使用 finally 语句,特别是在关闭文件时,他说“依赖终结器来关闭文件是一个严重错误”。两页后,他说合法的两个用例之一是显式终止方法模式

Foo foo = new Foo();
try{
    ///process foo
} finally{
    foo.terminate();
}

具有终止方法的类包括 FileInputStream 和 FileOutputStream。那么这是否意味着在 finally 语句中关闭文件?

1) Joshua Bloch 的第 7 项是否矛盾?

2)是否需要终止方法模式?如果没有具有相同效果的 finally 语句,您就不能编写上面的代码吗?

4

1 回答 1

2

我猜作者的意思是您应该使用finally块代码(这不是终结器)try-catch来关闭/清理您的资源,而不是减轻finalize方法(这是终结器)。

有关终结器的更多信息,请查看 Java 中何时调用 finalize() 方法?

于 2013-03-14T16:14:52.417 回答