Объяснение того, как загрузчик классов загружает статические переменные

Хорошо, так что это вопрос новичка на Java, но я, кажется, не могу разобраться с этим.

У меня есть следующий код в моем классе

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;
    }

Этот код дает мне исключение инициализации из-за nullpointerexception в следующей строке

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

Кажется, переменная LIST_INTEGER в это время пуста.

Может кто-нибудь объяснить, почему? Является ли процесс загрузчика классов линейным, другими словами, вызывает ли он метод перед полной загрузкой всех остальных переменных?

Ответы на вопрос(2)

Ваш ответ на вопрос