调用B的时候不是应该先加载A吗?
public class test3 {
public static void main(String[] args) {
A.B.go();
}
}
class A{
static{
System.out.println("a");
}
static class B{
static{
System.out.println("b");
}
public static void go(){
System.out.println("go");
}
}
}
因为B类是内部类,你查看字节码文件可以发现你这个会生成test3.class, A.class 和 A$B.class,你使用 A.B.go() 时知只会用到test3.class 和 A$B.class 不会用到 A.class所以不会执行其中的静态代码块
外部类是静态的就可以啊。