Java 中的静态块
前几天我正在查看一些代码,我遇到了:
static {
...
}
来自C++,我不知道为什么会这样。这不是一个错误,因为代码编译得很好。这个“静态”代码块是什么?
前几天我正在查看一些代码,我遇到了:
static {
...
}
来自C++,我不知道为什么会这样。这不是一个错误,因为代码编译得很好。这个“静态”代码块是什么?
它是一个静态初始值设定项。它在加载类时执行,是放置静态变量初始化的好地方。
从 http://java.sun.com/docs/books/tutorial/java/javaOO/initial.html
一个类可以具有任意数量的静态初始化块,并且它们可以出现在类体中的任何位置。运行时系统保证静态初始化块按照它们在源代码中出现的顺序进行调用。
如果你有一个带有静态查找映射的类,它可能看起来像这样
class MyClass {
static Map<Double, String> labels;
static {
labels = new HashMap<Double, String>();
labels.put(5.5, "five and a half");
labels.put(7.1, "seven point 1");
}
//...
}
这很有用,因为上述静态字段无法使用 初始化。它需要以某种方式调用 put 方法。labels = ...