我正在浏览Android源代码,只是简单地阅读它,然后发现在Android.Util.JsonReader
中有一段奇怪的代码。它如下所示:
private final List<JsonScope> stack = new ArrayList<JsonScope>();
{
push(JsonScope.EMPTY_DOCUMENT);
}
这到底是在做什么呢?也就是说,紧跟在
new
赋值后面的范围是什么?如果我理解正确,每当这个类JsonReader
被实例化时(不是静态的,对吗?),stack
将在此处初始化,而不是通过构造函数中的this.stack = ...
进行初始化,对吗?那么这个范围具体起什么作用?在
stack
初始化之后执行吗?我对这个模式的名称及其使用有点困惑。
push
看起来只是执行了stack.add(...)
。那么,最后一个问题,这个操作会在所有字段初始化之后执行吗?还是会按照自上而下的方式进行,也就是先初始化前7个字段,然后执行作用域,再初始化接下来的6个字段? - Joshthis
和super
,但也可能有点危险,因为某些“较低”的字段可能尚未初始化? - Josh