相关疑难解决方法(0)

JLS中是否有关于执行静态初始化块的顺序的保证?

我想知道使用如下构造是否可靠:

private static final Map<String, String> engMessages;
private static final Map<String, String> rusMessages;

static {
    engMessages = new HashMap<String, String> () {{
        put ("msgname", "value");
    }};
    rusMessages = new HashMap<String, String> () {{
        put ("msgname", "????????");
    }};
}

private static Map<String, String> msgSource;

static {
    msgSource = engMessages;
}

public static String msg (String msgName) {
    return msgSource.get (msgName);
}
Run Code Online (Sandbox Code Playgroud)

有可能我会得到NullPointerException因为msgSource初始化块之前会执行初始化块engMessages吗?

(关于为什么我不在msgSource初始化结束时进行初始化.块:只是味道问题;如果描述的结构不可靠,我会这样做)

java static-initialization jls

2
推荐指数
1
解决办法
354
查看次数

标签 统计

java ×1

jls ×1

static-initialization ×1