Java入口点

时间:2013-09-03 05:07:21

标签: java

是否可以将主要(默认)入口点更改为其他?

如果我写代码

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 !!!

2 个答案:

答案 0 :(得分:2)

基本概念是首先搜索主类,而不是通过main执行。所以第一个答案是否定的。您无法更改入口点。

现在,在您的代码中,您有一个静态的System.out.prinln块。在java中,第一次加载类时会加载静态内容,并且它们只在内存中有一个副本。因此,在找到主块后将执行静态块。只要尝试删除这个主要块,你就会看到自己的差异

答案 1 :(得分:2)

将业务代码放入静态初始值设定项(将main留空)的技巧是可行的。但静态初始化程序的主要目的是执行一些初始化,而不是运行业务代码。

您可以将类似System.out.println("TestWithoutMain class loaded");的内容用于记录目的,但这不应该是您的程序的主要目标。

Java不会阻止您编写错误,不可读和不可维护的代码。从创建无意义的程序。其他编程语言也没有。

通用编程实践不鼓励您将业务代码放在静态初始化器中绕过main