【发布时间】:2015-01-31 23:02:51
【问题描述】:
我在 Java7 中实现了一个类。它不继承/实现任何东西。它使用 Tess4J,所以我认为最终释放资源会很好。所以我像这样覆盖了 finalize() 方法:
@Override
protected void finalize() throws Throwable
{
try
{
TessAPI1.TessBaseAPIDelete(handle);
}
catch(Throwable t)
{
throw t;
}
finally
{
super.finalize();
}
}
Netbeans 8.0.2 给我这个方法的警告:
finalize declared()
Netbeans 网站上的描述对我没有多大用处:
warns about implementation of Object.finalize()
我没有覆盖任何其他方法,例如 equals 或任何其他方法(也许我应该这样做?)。 你能告诉我为什么会收到这个警告吗?
【问题讨论】:
-
来自 Effective Java 的引述:“终结器是不可预测的,通常是危险的,而且通常是不必要的”。
-
捕获并立即重新抛出异常是没有意义的。这样的 catch 块可以删除,因为它没有实际效果。
-
@Natix 谢谢!我不知道我可以省略
catch部分。
标签: java netbeans java-7 finalize