public class SuperClass {
private final Object finalizerGuardian = new Object(){
@Override
protected void finalize(){
System.out.println("SuperClass finalize by the finalizerGuardian");
}
};
@Override
protected void finalize(){
System.out.println("SuperClass finalize by the finalize method");
}
public static void main(String[] args) throws Exception{
SubClass sub = new SubClass();
sub = null;
System.gc();
Thread.sleep(500);
}
public class SubClass extends SuperClass{
@Override
public void finalize(){
System.out.println("SubClass finalize by the finalize method");
}
它是一个终结者守护者在anoymous类,为什么这个终结者守护者总是被称为超类运行?thx时。关于终结者守护进程
我知道它在调用这个main方法时创建了一个finalizerGuardian的实例,但是它并没有创建超类对象,因为它只是创建了一个子类对象,所以为什么这个finalizerGuardian被调用了? – Carlos
启动一个调试器,你会看到finalizerGuardian将在创建SubClass时实例化。这是继承的特点之一。 – Frank