0

谁能解释一下我们在哪种情况下使用静态初始块?

4

5 回答 5

6

您可以将其用作类中静态数据的“构造函数”。例如,常见的情况可能是设置特殊单词列表:

private static final Set<String> special = new HashSet<String>();
static {
    special.add("Java");
    special.add("C++");
    ...
}

然后可以稍后使用这些来检查字符串是否匹配有趣的内容。

于 2012-12-21T21:24:20.433 回答
3

最常见的场景是在类加载时加载一些资源,例如为 JNI 加载库

于 2012-12-21T21:22:23.517 回答
0

另一个常见的情况是当您需要用于创建静态的某些代码引发异常时。

于 2012-12-21T21:23:59.623 回答
0

另一个例子是 java.lang.Object

public class Object {

    private static native void registerNatives();
    static {
        registerNatives();
    }
...
于 2012-12-22T01:24:12.367 回答
-2

我一直使用它们来初始化列表和地图。

List<String> myList = new ArrayList<String>(){{
    add("blah");
    add("blah2");
}};
for(String s : myList){
    System.out.println(s);
}
于 2012-12-21T21:25:46.660 回答