我想在调用静态块之前“执行” 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
答案 0 :(得分:2)
有什么办法可以先“执行”主方法,然后再进行静态blk
不。没有。不是那个静态块。
假设您要在main
方法完成后执行一些代码,则可以:
main
方法末尾调用的方法main()
中引发异常,或者您还可以将代码放入不同类的静态块中,并动态加载/初始化它,或以各种方式触发它。但是调用方法更简单。
答案 1 :(得分:0)
使用静态块是不可能的,但是您可以使用实例初始化器块:
公共类加载器{
{
System.out.println("in instance initializer");
}
public static void main(final String[] args) {
System.out.println("in main method");
new Loader();
}
}