<<深入jvm>>中有这么一段:
The same is not true of interfaces(指接口的第一次初始化与类不同), however. An interface is initialized only because a non-constant field declared by the interface is used
就是不知道这里面的non-constant field 指的是哪些字段?
------解决方案--------------------
从字面看是非常量字段
不过接口中没有非常量字段啊
不明白.
------解决方案--------------------
接口中不能定义non-constant field,应该是书上印错了。关于接口何时初始化,可以看看下面这段代码。
- Java code
public class Main { public Main(String M) { System.out.println(M); } public static void main(String[] args) { I1 a = new C2(); System.out.println("---------"); Main M = C2.M; }}interface I1 { Main M = new Main("I1");}class C1 { public static final Main N = new Main("C1");}class C2 extends C1 implements I1 {}