最终确定一个对象时字段的行为是什么?

时间:2016-06-06 10:11:53

标签: java finalize

例如

public String format(Field field, Object o) {
    field.setAccessible(true);
    Object value = null;
    try {
        value = field.get(o);
        if (value instanceof Number) {
            return field.get(o).toString();
        }
    } catch (IllegalAccessException e) {
        ....
    }
   ...
}

class MyClass { private MyField1 f1; private MyField2 f2; @override protected void finalize() throws Throwable { System.out.println("MyClass finalized."); } } 最终确定的实例MyClassf1也已完成时? 如果f2MyField1也有终结器,那么它们之间的执行顺序是什么?

1 个答案:

答案 0 :(得分:1)

不,f1f2不会自动完成。

他们可能会引用可以作为MyClass实例同时进行垃圾收集的对象,假设没有其他内容指的是f1和{{f2的对象。 1}}是指。

向类添加显式终结器可能会干扰JVM的工作,除非你采用这个习惯用法:

protected void finalize() throws Throwable {
    try {
        /*your finalize code*/
    } finally {
        super.finalize();
    }
}