是否可以将主要(默认)的入口点更改为其他?
如果我写代码
public class TestWithoutMain {
static {
System.out.println("hello bristy!!!");
}
}
我无法在eclipse中运行代码。如果我将main方法添加到上面的代码
public class TestWithoutMain {
static {
System.out.println("hello bristy!!!");
}
public static void main(String[] args) {
}
}
打印 hello bristy !!! 。
答案 0 :(得分:2)
基本概念是首先搜索主类,而不是通过main执行。所以第一个答案是否定的。您无法更改入口点。
现在,在您的代码中,您有一个静态的System.out.prinln块。在java中,第一次加载类时会加载静态内容,并且它们只在内存中有一个副本。因此,在找到主块后将执行静态块。只要尝试删除这个主要块,你就会看到自己的差异
答案 1 :(得分:2)
将业务代码放入静态初始值设定项(将main
留空)的技巧是可行的。但静态初始化程序的主要目的是执行一些初始化,而不是运行业务代码。
您可以将类似System.out.println("TestWithoutMain class loaded");
的内容用于记录目的,但这不应该是您的程序的主要目标。
Java不会阻止您编写错误,不可读和不可维护的代码。从创建无意义的程序。其他编程语言也没有。
通用编程实践不鼓励您将业务代码放在静态初始化器中绕过main
。