首页 > 解决方案 > 如何在java中的main方法之后执行静态块?

问题描述

我想在调用静态块之前“执行” main() 方法。根据 Java 规则,静态块将在类加载时执行,然后调用 main() 方法。有什么方法可以先“执行”主方法,然后是静态块?

public class StaticDemo {
    static {
        System.out.println("in  static block");
    }

    public static void main(String  args[]){
        System.out.println("in main method");
    }
}

输出将是....

in  static block
in main method

从静态块调用 main 方法只会生成预期的输出。但它首先执行静态块,然后调用 main 方法。

import com.sun.javaws.Main;

public class StaticDemo {
        static {
        main(null);
        System.out.println("in  static block");
    }

    public static void main(String  args[]){
        System.out.println("in main method");
    }
}

输出将是...

in main method
in  static block
in main method

我的预期输出是....

in main method
in  static block

标签: javastatic-block

解决方案


有什么方法可以先“执行”主方法,然后是静态 blk

不,没有。不是那个静态块。

假设您想在main方法完成后执行一些代码,您可以:

  • 将代码放入您在方法末尾调用的main方法中,
  • 将代码放入主线程的未捕获异常处理程序中,并故意在 中抛出异常main(),或
  • 将代码放入关闭挂钩。

您还可以将代码放入不同类的静态块中,并动态加载/初始化它,或以各种方式触发它。但是调用方法更简单。


推荐阅读