为什么接口中的 main 函数而不是类中的 main 函数在 Java 17 中编译和运行没有问题?

问题描述 投票:0回答:1

我一直认为

main
方法一定是在Java的类内部,但这里它是在接口内部

public interface Main {
  static void main(String[] args){
    System.out.println("HelloWorld");
  }
}

编译和运行没有问题

$ javac Main.java 
$ java Main
HelloWorld
$ java -version
openjdk version "17.0.8" 2023-07-18
OpenJDK Runtime Environment (Alibaba Dragonwell Standard Edition)-17.0.7.0.7+7-GA (build 17.0.8+7)
OpenJDK 64-Bit Server VM (Alibaba Dragonwell Standard Edition)-17.0.7.0.7+7-GA (build 17.0.8+7, mixed mode, sharing)

那它也可以是一个接口吗?

java-17
1个回答
1
投票

根据 JLS v17,这绝对没问题。来自第 12.1 节 - 我的重点:

Java 虚拟机通过调用某个指定类或接口的 main 方法来开始执行,并向其传递一个字符串数组的参数。

看起来其他一些文本尚未更新以在各处包含“或界面”,但这绝对是故意的更改。

包含“或接口”的第一个版本是 v9 - v8 文本仍然只有“某些指定的类”。

© www.soinside.com 2019 - 2024. All rights reserved.