我们知道main
方法是Java程序的入口,如以下资源所述:
Why main() method is needed in java main class?
Why should main be present in a Java class? [duplicate]
如果是这种情况,那么如果main
方法是入口点,为什么我们需要在类中包装main
方法?
包裹class
方法的main
的作用是什么?
答案 0 :(得分:4)
在Java中,没有封装类型就无法拥有一个方法。您需要一个类,一个接口,一个枚举等,才能声明和/或实现一个方法。就是这样。
即使启动Java程序,也要指定包含main方法的类的名称。您不只是运行任意语句。
换句话说,它与程序结构有关,而不是与围绕main方法的类扮演的特定角色有关。您甚至可以在Java的最新版本中使用接口代替类。
答案 1 :(得分:2)
所有代码都位于一个.class
文件中,虽然可以为此方法创建一个例外,但是这样做会增加复杂性,而在没有太多改进的情况下。
您需要将代码放入.class
文件中,并且每个文件中都有一个公共class
,interface
,enum
或interface
与文件相同的名称,您仍然需要某种方式在代码中声明文件的名称。例如
代替
class Main {
public static void main(String... args) { }
}
你可以拥有
enum Main { ;
public static void main(String... args) { }
}
或
interface Main {
static void main(String... args) { }
}
但是您需要将main
包裹在与文件名匹配的名称中。
答案 2 :(得分:2)
对于Java VM,类文件是传递可执行Java代码的唯一方法,而Java库只是包含类文件的容器的变体。
创建Java时,直接映射了源代码级Java类和类文件,因此生成包含可执行代码的类文件的唯一方法是声明一个类。
如今,这种关系不是很严格,Java语言中存在非类构件,这可能导致生成类文件,例如:包注释或模块声明,此外,运行时可能会生成类,例如lambda表达式。
因此,原则上,可能会有一种新的语言构造允许定义一个没有类声明的独立main
方法,该方法被编译为场景。但是,由于典型的应用程序只有一个入口点(并且没有命名的托管类,定义任何一个以上的可能性都将消失),因此无法证明创建新的语言构造是合理的。
答案 3 :(得分:2)
由于与其他语言相反,Java中没有功能。
Java只知道方法。
区别:方法与类相关联,函数与类无关。
因此,为了拥有一个 first 方法,该东西仍然是一个方法,需要一个封闭的类。
换句话说:在Java中,为某些代码赋予名称的唯一方法是将其变成方法。 (并且您确实希望您的“起点”有一个名称)并且方法需要进入一个类,在查看Java语言规范时,该类是隐式的(第8.2章,class members)。