我正在浏览Android源代码,只是阅读它,我在Android.Util.JsonReader
中遇到了一大块代码。它如下:
private final List<JsonScope> stack = new ArrayList<JsonScope>();
{
push(JsonScope.EMPTY_DOCUMENT);
}
这到底是做什么的?也就是说,new
作业之后的范围?如果我理解正确,每当这个类JsonReader
被实例化时(不是静态的,对吧?),stack
将在这里初始化,而不是通过构造函数中的this.stack = ...
,对吗?
范围的作用是什么?这是在stack
初始化后执行的吗?我在这里有点困惑,关于这个模式的名称及其用途。
答案 0 :(得分:5)
与新声明无关。它是一个初始化器,有点像未命名的无参数构造函数。
http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.6
它们在文本顺序的类的构造函数之前执行
http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.5