Explicación de cómo el cargador de clases carga variables estáticas

Ok, esta es una pregunta de novato en java, pero parece que no puedo entenderlo.

Tengo el siguiente código dentro de mi clase

private static final String [] LIST_CODE = gerarListCode();
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 String [] gerarListCode()
    {
        String [] listCode = new String [LIST_INTEGER.length];

        for (int i=0 ; i<LIST_INTEGER.length ; i++)
        {
           //do some stuff      
        }

        return listaUnicode;
    }

Este código me está dando una excepción de inicialización debido a una excepción de nullpointer en la siguiente línea

 String [] listCode = new String [LIST_INTEGER.length];

Parece que la variable LIST_INTEGER es nula en ese momento.

¿Alguien puede explicar por qué? ¿el proceso del cargador de clases es lineal, en otras palabras, invoca el método antes de cargar por completo todas las demás variables?

Respuestas a la pregunta(2)

Su respuesta a la pregunta