接口真的没有构造函数吗?

Evg*_*eev 2 java interface list

如果interface没有构造函数,那么这段代码是如何编译的?

    interface I {
        List<Integer> LIST = Arrays.asList(1, 2, 3);
    }
Run Code Online (Sandbox Code Playgroud)

List在这里初始化?

Ste*_*n C 6

接口真的没有构造函数吗?

是.它们无法实例化.

谁在这里初始化LIST?

接口的隐式静态初始化程序...在任何东西之前调用一次就可以使用LIST对象1.

接口声明的字段是隐式的public,static并且final(JLS 9.3)和任何初始化都是由接口的静态初始化(JLS 9.3.1/12.4.2)执行的.


1 - 实际上,这并非严格正确.在正确初始化之前,可以编写一个使用静态字段的程序.(细节在JLS中.)但它需要做一些......你不应该......