包裹main方法的类的作用是什么?

时间:2018-12-20 08:12:31

标签: java jvm main

我们知道main方法是Java程序的入口,如以下资源所述:

Why main() method is needed in java main class?

Why should main be present in a Java class? [duplicate]

如果是这种情况,那么如果main方法是入口点,为什么我们需要在类中包装main方法?

enter image description here

包裹class方法的main的作用是什么?

4 个答案:

答案 0 :(得分:4)

在Java中,没有封装类型就无法拥有一个方法。您需要一个类,一个接口,一个枚举等,才能声明和/或实现一个方法。就是这样。

即使启动Java程序,也要指定包含main方法的类的名称。您不只是运行任意语句。

换句话说,它与程序结构有关,而不是与围绕main方法的类扮演的特定角色有关。您甚至可以在Java的最新版本中使用接口代替类。

答案 1 :(得分:2)

所有代码都位于一个.class文件中,虽然可以为此方法创建一个例外,但是这样做会增加复杂性,而在没有太多改进的情况下。

您需要将代码放入.class文件中,并且每个文件中都有一个公共classinterfaceenuminterface与文件相同的名称,您仍然需要某种方式在代码中声明文件的名称。例如

代替

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)。