既然 main() 被静态化,以便 JVM 访问它,因为它没有封装类的实例,那么为什么需要封装它呢?
正如 @Sören 所说,直到最近的版本,都只是假设所有内容都需要位于类内部,甚至是程序的入口点(可能是为了在类内部注入更多依赖项)。那是因为 Java 是一种纯粹的面向对象语言(至少是这样)。
现在,您可以编写
main
而无需实际定义任何类。这发生在 Java 11 以后。
public static void main(String[] args) {
System.out.println("Hello, World!");
}
运行时将根据包含该方法的
.java
文件的名称进行编译并自动创建一个类。
Java 的其他版本(>= 21)允许您定义主要逻辑,甚至无需创建方法。
System.out.println("Hello, World!");
在
MyRunner.java
文件内将被 JVM 翻译为:
public class MyRunner {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}