Java入口点

Java入口点,java,Java,是否可以将java程序的入口点从maindefault更改为其他 如果我写代码 public class TestWithoutMain { static { System.out.println("hello bristy!!!"); } } 我无法在eclipse中运行代码。如果我在上面的代码中添加main方法 public class TestWithoutMain { static { System.out.println("he

是否可以将java程序的入口点从maindefault更改为其他

如果我写代码

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

基本概念是首先搜索主类,然后通过main执行主类。所以第一个答案是否定的。你不能改变入口点


现在,在代码中有一个静态System.out.prinln块。在java中,静态内容是在第一次加载类时加载的,它们在内存中只有一个副本。因此,静态块将在找到主块后执行。只要试着删除这个主块,你就会看到不同之处。

基本概念是先搜索主类,然后再通过main执行。所以第一个答案是否定的。你不能改变入口点


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

将业务代码放入静态初始值设定项中,将主块保留为空是可能的。但是静态初始化器的主要目的是执行一些初始化,而不是运行业务代码

您可以在未加载主类的情况下放置类似System.out.PrintLTest的内容;用于日志记录,但这不应该是您的程序的主要目标

Java不会阻止您编写糟糕、不可读和不可维护的代码。以及创造无意义的节目。其他编程语言也不例外


常见的编程实践不鼓励您绕过main将业务代码放在静态初始值设定项中

将业务代码放在静态初始值设定项中,让main为空这样的技巧是可能的。但是静态初始化器的主要目的是执行一些初始化,而不是运行业务代码

您可以在未加载主类的情况下放置类似System.out.PrintLTest的内容;用于日志记录,但这不应该是您的程序的主要目标

Java不会阻止您编写糟糕、不可读和不可维护的代码。以及创造无意义的节目。其他编程语言也不例外


常见的编程实践不鼓励您绕过main将业务代码放在静态初始值设定项中

为什么要这样做?main函数的要点是您将代码放在其中,而不是放在静态{…}块中。可能的重复项是您应该检查这个:静态块主要用于加载带有JNI的外部库。因此,除非您正在使用JNI,否则您不应该使用它们。为什么要这样做?主函数的要点是您将代码放在其中,而不是放在静态{…}块中。可能的重复项是您应该检查这一项:静态块主要用于加载带有JNI的外部库。因此,除非您使用的是JNI,否则不需要使用它们。是的,但它可能是在某个MainDummy类中定义的空方法,仅用于运行应用程序。是的。但如果问题是是否可以将入口点从main更改为其他内容,我的答案是否定的,因为您始终需要main方法作为入口点。@eis:您是对的;为了避免混淆,我重新措辞了答案。另一个答案已经说不可能更改入口点,所以我不再重复。是的,但它可能是在某个MainDummy类中定义的空方法,仅用于运行应用程序。是的。但如果问题是是否可以将入口点从main更改为其他内容,我的答案是否定的,因为您始终需要main方法作为入口点。@eis:您是对的;为了避免混淆,我重新措辞了答案。另一个答案已经说改变入口点是不可能的,所以我不再重复了。