java - 接口(interface)真的没有构造函数吗?

标签 java list interface

如果接口(interface)没有构造函数,那么这段代码如何编译?

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

谁在这里初始化List

最佳答案

Do interfaces really have no constructors?

是的。它们无法被实例化。

Who initializes LIST here?

接口(interface)的隐式静态初始值设定项...在任何内容可以使用 LIST 对象1之前调用一次。

接口(interface)声明的字段隐式为 publicstaticfinal ( JLS 9.3 ),并且任何初始化均由接口(interface)的静态初始化( JLS 9.3.1/12.4.2 )。


1 - 实际上,这并不完全正确。可以编写一个程序,在静态字段正确初始化之前就使用该静态字段。 (详细信息在 JLS 中。)但这需要做一些事情......而且你不应该......

关于java - 接口(interface)真的没有构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13899156/

相关文章:

java - RMI 服务器 java.security.AccessControlException : access denied

java - 将事件处理添加到 Jframe 对话框

java - 在 Eclipse 调试器中启动后进程暂停

java - Java List<String> 和 List<String>[] 有什么区别

android - 将自定义对象添加到 ArrayAdapter。如何抓取数据?

java - 为什么 Eclipse 在接口(interface)方法上提示 @Override?

c# - 我应该在界面中指定 IQueryable 而不是 List 吗?

java - Spring 数据 JPA : Named method without JpaRepository

linux - 我需要来自 glibc 的异步信号安全函数列表

java - 从适配器类扩展类