出于好奇,
为什么将finalize()
方法的访问修饰符设为protected
. 为什么不能呢public
?有人可以解释一下这背后的任何具体原因吗?
另外,我知道该finalize()
方法只被调用一次。如果我在内部程序中调用它两次,会发生什么?垃圾收集器会再次调用它吗?
private void dummyCall() {
try {
finalize();
finalize();
} catch (Throwable e) {
e.printStackTrace();//NOT REACHES EXCEPTION
}
}