在 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 语句,您就不能编写上面的代码吗?