如果JVM具有该类的名称,为什么JVM无法创建包含主方法的类的对象以便从该类访问主方法?

问题描述

好吧,我不理解为什么JVM无法创建具有主要方法的类对象

如果JVM可以通过该类的名称访问主方法,那么肯定可以创建该类的对象!

但是通过类名访问main方法的原因是什么?

我问这个问题是因为,如果 JVM具有类名来访问主方法,那么它肯定可以使用该名称创建该类的对象。 / p>

解决方法

我认为您是在问(实际上)为什么不能这样编写“ main”方法:

// (Note: this does not work ...)
public class Test {
    public void main(String[] args) {
        System.out.println("Hello world");
   }
}

NB:以上的main不是static ...

答案是:

  1. 因为那不是1990年代Java的设计方式。

  2. 我们无法告诉您为什么他们以这种方式设计Java,因为做出决定时我们不在会议室。

  3. 我们可以推断出,(当前)Java团队没有扩展Java来允许您执行上述操作的原因是因为迫切需要这样做。实际上,static“主要”方法有效。俗话说:

    如果它没有损坏,请不要修复它。

如果您希望应用程序的入口点是通过一个对象,那么对它进行编码以使其工作很简单。例如:

public class Test {

    public static void main(String[] args) {
        new Test().main(args);
    }

    private void main(String[] args) {
        System.out.println("Hello world");
    }
}

那只是3行额外的代码。

请注意,从Java的规范和Java的实现角度来看,static main方法是最简单的方法。