如何在后主要的Java方法执行静态块?

问题描述 投票:-2回答:2

我想静态块被称为前“执行” 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

从调用静态块主要方法只产生期望的输出。但它首先执行静块,并从它称为主要方法。

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
java static-block
2个回答
2
投票

有什么办法先“执行”的主要方法,然后静BLK

号没有。这并不是说静态块。

假设你要执行一些代码main方法完成后,你可以:

  • 把代码放到你调用在main方法的最后一个方法,
  • 把代码放到一个未捕获的异常处理程序主线程和故意main()抛出一个异常,或
  • 把代码放到一个关闭挂钩。

你也可以把代码放到一个不同的类中的静态块,要么动态加载/初始化,或以各种方式触发它。但调用的方法更简单。


0
投票

这是不可能的静态块,但你可以使用一个实例初始化块:

公共类加载器{

{
    System.out.println("in instance initializer");
}

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

}

© www.soinside.com 2019 - 2024. All rights reserved.