何时在JAVA中使用静态初始块?

时间:2012-12-21 21:20:11

标签: java

任何人都可以解释一下我们在哪种情况下使用静态初始块?

5 个答案:

答案 0 :(得分:6)

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

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

然后可以在以后使用它们来检查字符串是否匹配有趣的东西。

答案 1 :(得分:3)

最常见的情况是在类加载上加载一些资源,例如为JNI加载库

答案 2 :(得分:0)

另一个常见的问题是当你需要使用一些代码来创建静态时抛出异常。

答案 3 :(得分:0)

另一个例子是java.lang.Object

public class Object {

    private static native void registerNatives();
    static {
        registerNatives();
    }
...

答案 4 :(得分:-2)

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

List<String> myList = new ArrayList<String>(){{
    add("blah");
    add("blah2");
}};
for(String s : myList){
    System.out.println(s);
}