类中的静态块虽然被引用但未执行

时间:2014-06-11 19:06:09

标签: java static-block

我偶然发现了以下代码

class Super {
    static String ID = "QBANK";
}

class Sub extends Super {
    static {
        System.out.print("In Sub");
    }
}

public class Test{
    public static void main(String[] args){
        System.out.println(Sub.ID);
    }
}

我们将Sub作为Sub.id引用。所以我希望在Sub类中执行静态块并且"在Sub"打印但令我惊讶它不。虽然变量ID对于Super类的Sub类是可见的,因为我们使用Sub类引用变量,我希望它首先被加载。如果它被加载,那么静态块应该被执行。

因为它没有被打印,所以Sub类根本没有被加载?当我在代码中明确引用它时,这怎么可能呢?我的意思是如何在不加载到内存中的情况下识别类?我错过了什么?

0 个答案:

没有答案