问题描述
好吧,我不理解为什么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
...
答案是:
-
因为那不是1990年代Java的设计方式。
-
我们无法告诉您为什么他们以这种方式设计Java,因为做出决定时我们不在会议室。
-
我们可以推断出,(当前)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方法是最简单的方法。