Explanation of how classloader loads static variables

前端 未结 2 1834
再見小時候
再見小時候 2020-12-17 23:05

Ok so this is a newbie question on java, but i can\'t seem to get my head around it.

I have the following code inside my class

private static final          


        
2条回答
  •  佛祖请我去吃肉
    2020-12-17 23:52

    Yes, in short, it is linear.

    "What the compiler actually does is to internally produce a single class initialization routine that combines all the static variable initializers and all of the static initializer blocks of code, in the order that they appear in the class declaration. This single initialization procedure is run automatically, one time only, when the class is first loaded."

    Taken from Java in a nutshell.

    http://www.developer.com/java/other/article.php/2238491

    You should define the variables and then initialize them in a static intitializer block in the correct order, or you could swap the order of the statements as follows:

    private static final int [][] LIST_INTEGER = new int [][] { {947,947}, {110,103}, 
            {947,958}, {110,120}, 
            {947,954}, {103,107}, 
            {947,967}, {110,99,104}};
    
    private static final String [] LIST_CODE = gerarListCode(); 
    

提交回复
热议问题