Интерфейс со стандартным методом инициализируется, даже если этот метод переопределен и даже если он вообще не вызывается.Интерфейс с методом по умолчанию Инициализация
Пример:
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 этот случай не инициирует инициализацию интерфейса –