即使重写此方法并且即使完全不调用,也会初始化具有默认方法的接口。使用默认方法的接口初始化
例子:
public interface I {
int a = foo();
default void test1(){
}
static int foo(){
System.out.println("I initialized");
return 15;
}
}
public class C implements I{
public void test2(){
System.out.print("C initialized");
}
}
public class Test {
public static void main(String[] args) {
C c = new C();
c.test2();
}
}
打印:
I initialized
C initialized
这里有什么确切的问题?
这里有什么问题? –
根据第12.4.1节中的JLS 8,这种情况不会触发接口初始化 –