首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内部接口的主要方法(java-8)

内部接口的主要方法(java-8)
EN

Stack Overflow用户
提问于 2016-01-10 20:10:25
回答 1查看 434关注 0票数 3

由于java-8允许在接口中使用静态方法,所以我决定检查一下,这样一个简单的编译程序能否成功地运行:

代码语言:javascript
复制
public interface Test {
    static void main(String[] args) {
        System.out.println("I'm ok!");
    }
}

令人惊讶的是(对我来说)它运行得很完美。

令我困惑的是,在JVM规范中,classinterface有不同的语义和用法。在这种情况下,我担心这种行为真的是根据JVMS吗?因为事实上JVMS Ch.5.2。谈论class而不是class or interface

Java通过使用引导类加载程序创建初始来启动(§5.3.1),该类是以依赖于实现的方式指定的。然后,链接初始类,初始化它,并调用公共类方法void (String[])。

UPD

我知道,这个接口本身就是一个类。但是我说的是JVM,在这里,classinterface通常有不同的语义。例如

类或接口的运行时常量池是在Java虚拟机创建类或接口时构造的(§5.3)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-10 20:19:14

JVM规范在这里的措辞有点松懈。如果您引用引用的第5.3.1节,它会说:

以下步骤用于加载,从而使用引导类加载器创建以N表示的非数组类或接口C。

问题是,不管C是类还是接口,都会遵循相同的过程。

Java语言规范在描述虚拟机启动时同样不一致,一方面使用“类”,另一方面使用“类或接口”。

无论如何,将main方法作为接口的一部分应该非常好地工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34710274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档