Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,can";“公共静态无效主控”;是重命名还是重构?_Java_Refactoring_Main - Fatal编程技术网

在java中,can";“公共静态无效主控”;是重命名还是重构?

在java中,can";“公共静态无效主控”;是重命名还是重构?,java,refactoring,main,Java,Refactoring,Main,我不想更改公共静态无效String[]args签名的一部分,但是否可以“重命名”此函数(例如,只是为了好玩) 因此,执行的入口点将是一个具有另一个名称的函数 将其重命名为,比如,boot(如果不是历史性的,那么更好地反映在我的特定情况下它的实际使用情况) 相关的 我对做一些不同的事情很感兴趣,但这些问题仍然很有趣: 没有。上面写着: Java虚拟机通过调用某个指定类的方法main开始执行,并向其传递一个参数,该参数是一个字符串数组 这句话也是这么说的: 然后,Java虚拟机链接初始类,对其进

我不想更改
公共静态无效
String[]args
签名的一部分,但是否可以“重命名”此函数(例如,只是为了好玩)

因此,执行的入口点将是一个具有另一个名称的函数

将其重命名为,比如,
boot
(如果不是历史性的,那么更好地反映在我的特定情况下它的实际使用情况)


相关的

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

没有。上面写着:

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

这句话也是这么说的:

然后,Java虚拟机链接初始类,对其进行初始化,并调用公共类方法
voidmain(String[])


应用程序从
公共静态void main(字符串[]args)
开始运行。这就像是JVM开始程序的地方。如果您更改它,JVM将可以不启动您的应用程序


如果希望将
boot()
作为应用程序的起点,请在
main()
中调用它。根据Java语言规范,您不能这样做。但是,如果您愿意,因为Java是一个开源项目,所以请下载Java语言的完整源代码并进行相应的更改(我的意思是更改JVM本身的源代码)。这是你能做到的唯一方法

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

简单的答案是不,原因是,
JVM
只会寻找
main
,而不是任何自定义名称作为起点。必须使用准确的签名调用main
publicstaticvoidmain(String[]args)

从逻辑上讲,
JVM
如何知道,它必须寻找
boot
或其他方法,而不是
main
方法,除非
java
命令具有传递start方法的选项

但这要求太高了,没有充分的理由


第二,由于它的标准化,它也有助于开发人员社区,无论是谁看代码都知道如何运行给定的
Java
独立程序,或者说如果你有一个项目,你的第一点始终是寻找主方法,从这里继续。

在开始时,JVM正在使用字符串数组作为参数,从方法
public static void main
进行查看。所以,您唯一能做的就是重命名参数
args
。若你们想要像boot这样的方法,并没有人会阻止你们做这样的事情(我个人不推荐这种“模式”)


简单的答案是
。当您开始执行程序时,它会查找接受字符串数组参数的
公共静态void main(String[]args)
。从此入口点开始主线程。

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

好的,如果您也更改JVM的代码,那么这是可能的。感谢您指出了[source]黑客攻击的可能性。:)那么,是否没有可配置的方法呢?为什么,只是出于好奇而投反对票?是的,调用
boot
是我目前的工作:我总是觉得现在调用(即命名)它
main
实际上不是一个很好的描述性名称我现在就是这样做的。我只是总觉得现在的名字
main
其实不是很有描述性。听起来更像是历史产物。我习惯了
main
方法,所以对我来说
boot
只是一个不必要的方法调用。但是每个人都是自由的,所以不会阻止你:)很好,它是标准化的,但这不应该是一个showstopper,因为它仍然可以有一个标准化的方法来指定入口点的名称。这样做的一个原因是更好地自描述中心函数的名称。虽然我承认,如果main不够描述性,这是有争议的,而且我们还要补充一点,那就是它的广泛使用。正如你正确指出的,main是自我描述的,太多的灵活性变成了一种过激行为,在这种情况下没有太多的优势,你能陈述一下步骤吗
static void boot(String[] arguments){
    //your logic
}

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