任何人都可以解释一下我们在哪种情况下使用静态初始块?
答案 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);
}