java - 为什么 main 方法不能是默认范围?

标签 java

<分区>

如果我们声明具有默认范围(非公共(public))和公共(public) main 方法的类,它将成功执行。这里的类范围比 main 方法范围更严格。

但是如果我们将 main 方法声明为默认方法,那么 JVM 将抛出错误。为什么?

class DefaultTest {
    public static void main(String[] args) {
        System.out.println("output.........");
    }
}

运行成功但是

class DefaultTest {
    static void main(String[] args) {
        System.out.println("output.........");
    }
}

这不会。

我的意思是如果类本身不是公共(public)的,JVM 仍然可以访问 main 方法,这意味着 main 不需要是公共(public)的。但是,如果我们不将其声明为公开的,它将引发错误。

最佳答案

它由 Java 语言规范指定,请参阅 http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html第 12.1.4 章。调用 Test.main:

The method main must be declared public, static, and void.

JVM规范也有要求,看@A4L的回答。

关于java - 为什么 main 方法不能是默认范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20776413/

相关文章:

java - 如何使用 native SQL 作为在 Hibernate 中使用 Criteria API 进行的更大查询的片段(where 子句)?

java - ByteBuffer.allocateDirect(size) 不在 Android 2.2 模拟器中创建支持 byte[]

java - 我们可以在java中直接将对象读入字节缓冲区吗?

java - Spring中如何配置多个环境(开发/发布)?

java - 如何查看两个日期之间固定时间段的数量?

java - 惰性组合 Observables

java - 我虽然我知道关于 Enum 的一切,但是它是如何工作的

java - 从 JAVA 应用程序启动经过摘要验证的网页

java - 如何在Spring Servlet中接受JSON POST参数作为@RequestParam?

java - @UniqueConstraint 和 @Column(unique = true) 在 hibernate 注释中