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