好的,这是关于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似乎为空。

有人可以解释为什么吗?类加载器过程是线性的吗,换句话说,它是否在完全加载所有其他变量之前调用该方法?

最佳答案

是的,简而言之,它是线性的。



简而言之,取自Java。

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

您应该定义变量,然后以正确的顺序在静态intitializer块中对其进行初始化,或者可以按以下方式交换语句的顺序:

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();

09-16 04:20