6

我正在浏览 Android 源代码,只是在阅读它,我在Android.Util.JsonReader. 如下:

private final List<JsonScope> stack = new ArrayList<JsonScope>();
{
    push(JsonScope.EMPTY_DOCUMENT);
}

这究竟是在做什么?也就是说,紧随其后的范围new?如果我理解正确,每当这个类JsonReader被实例化(不是静态的,对吗?),stack将在这里初始化,而不是通过this.stack = ...构造函数中的 a ,对吗?

那么作用域是做什么的呢?stack是在初始化之后执行的吗?对于这种模式的名称及其用途,我在这里有点困惑。

4

1 回答 1

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

于 2012-04-16T19:34:51.683 回答