在java中,可以重命名或重构“public static void main”吗?

时间:2012-06-08 10:53:00

标签: java refactoring main

我不想更改签名的public static void ... String[] args部分,但是可以“重命名”此功能(例如,只是为了好玩)?

因此执行的入口点将是具有其他名称的函数。

将其重命名为boot(如果不是历史记录,那么在我的特定情况下,它会更好地反映出它的实际用途)。


相关

我有兴趣做一些不同的事情,但这些问题仍然很有趣:

public static void main(String arg[ ] ) in java is it fixed?

Why the name main for function main()

7 个答案:

答案 0 :(得分:10)

没有。 Java Language Specification说:

  

Java虚拟机通过调用某个指定类的方法main开始执行,并向其传递一个参数,该参数是一个字符串数组。

JVM Specification说同样的话:

  

Java虚拟机然后链接初始类,初始化它,并调用公共类方法void main(String[])

答案 1 :(得分:4)

简单回答否,原因,Specification就是这样,JVM只会查找main而不是任何自定义名称作为起点。必须使用确切的签名public static void main(String[] args)

将其称为main

从逻辑上讲,JVM如何知道代替main方法,除了boot命令有选项之外,它必须查找java或其他内容才有意义传递开始方法。

但是这没有充分的理由要求太多。

其次,因为它的标准化也有助于开发者社区,无论谁看到代码都知道如何运行给定的Java独立程序,或者说如果你有一个项目,你的第一点总是寻找主要方法,从那里开始。

答案 2 :(得分:2)

没有。根据Java语言规范,你不能这样做。但是如果你想要,因为Java是一个开源项目,所以下载完整的Java语言源代码并相应地进行更改(我的意思是更改JVM本身的源代码)。这是你能做到的唯一方法。

所以现在你可以理解,为什么我说这是不可能的。

答案 3 :(得分:2)

在开始时,JVM从方法public static void main查找字符串数组作为参数。所以你唯一能做的就是重命名参数args。如果你想要像boot这样的方法,那么就不会阻止你做这样的事情(我个人不推荐“模式”)

static void boot(String[] arguments){
    //your logic
}

public static void main(String[] args) {
    boot(args);
}

答案 4 :(得分:1)

您的应用程序从public static void main(String[] args)开始运行。这就像JVM开始审议的那一点。如果您更改它,JVM将随时无法启动您的应用程序。

如果您希望将boot()作为申请的起点,请在main()中进行调用。

答案 5 :(得分:1)

简单回答是NO。当你开始执行程序时,它会查找带有String数组参数的public static void main(String[] args)。从这个入口点主线程开始。

答案 6 :(得分:1)

是的,如果我们可以更改JVM的配置并让它查找另一个名称而不是main方法的方法,我们可以更改main方法的名称。