Static block in Java not executed

前端 未结 5 1449
长情又很酷
长情又很酷 2020-11-28 03:32
class Test {
    public static void main(String arg[]) {    
        System.out.println("**MAIN METHOD");
        System.out.println(Mno.VAL); // SOP(9090)         


        
5条回答
  •  天涯浪人
    2020-11-28 04:05

    As far as I know, it will be executed in order of appearance. For instance :

     public class Statique {
         public static final String value1 = init1();
    
         static {
             System.out.println("trace middle");
         }
         public static final String value2 = init2();
    
    
         public static String init1() {
             System.out.println("trace init1");
             return "1";
         }
         public static String init2() {
             System.out.println("trace init2");
             return "2";
         }
     }
    

    will print

      trace init1
      trace middle
      trace init2
    

    I just tested it and the statics are initialized (=> print) when the class "Statique" is actually used and "executed" in another piece of code (my case I did "new Statique()".

提交回复
热议问题