我不想更改签名的public static void
... String[] args
部分,但是可以“重命名”此功能(例如,只是为了好玩)?
因此执行的入口点将是具有其他名称的函数。
将其重命名为boot
(如果不是历史记录,那么在我的特定情况下,它会更好地反映出它的实际用途)。
相关
我有兴趣做一些不同的事情,但这些问题仍然很有趣:
public static void main(String arg[ ] ) in java is it fixed?
答案 0 :(得分:10)
没有。 Java Language Specification说:
Java虚拟机通过调用某个指定类的方法
main
开始执行,并向其传递一个参数,该参数是一个字符串数组。
JVM Specification说同样的话:
Java虚拟机然后链接初始类,初始化它,并调用公共类方法
void main(String[])
。
答案 1 :(得分:4)
简单回答否,原因,Specification就是这样,JVM
只会查找main
而不是任何自定义名称作为起点。必须使用确切的签名public static void main(String[] args)
从逻辑上讲,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方法的名称。