6

私は Android のソースをブラウジングしていて、ちょっと読んでいるだけでしたAndroid.Util.JsonReader.. それは次のとおりです。

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

これは正確に何をしているのですか?つまり、new割り当て直後のスコープですか?私が正しく理解していれば、このクラスJsonReaderがインスタンス化されるときはいつでも(静的ではありませんよね?)、コンストラクターstackの a を介してではなく、ここで初期化されますよね?this.stack = ...

では、スコープは何をしますか?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 に答える