【发布时间】:2015-01-11 10:26:13
【问题描述】:
具有默认方法的接口会被初始化,即使该方法被覆盖并且根本没有被调用。
例子:
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
这到底是什么问题?
【问题讨论】:
-
这里有什么问题?
-
根据 JLS 8 12.4.1 节,这种情况不会触发接口初始化
标签: java methods interface default