Przeglądam źródła Androida, po prostu czytam i natknąłem się na dziwny fragment kodu w Android.Util.JsonReader
. Jest on następujący:Osobliwa Java Scope
private final List<JsonScope> stack = new ArrayList<JsonScope>();
{
push(JsonScope.EMPTY_DOCUMENT);
}
Co to dokładnie robi? To znaczy, zakres bezpośrednio po przypisaniu new
? Jeśli rozumiem poprawnie, za każdym razem, gdy ta klasa, JsonReader
jest instancjonowana, (zamiast statycznego, prawda?), stack
zostanie zainicjowany tutaj, zamiast przez this.stack = ...
w konstruktorze, prawda?
Co robi zakres? Czy jest to wykonywane po zainicjowaniu stack
? Jestem trochę zmieszany, jeśli chodzi o nazwę tego wzoru i jego użycie.
Co następnie uruchamia go? Czy ich może być wiele różnych, prawdopodobnie po różnych polach klasowych? – Josh
Dzięki, to są świetne linki. Pytanie jednak, dlaczego pojawia się natychmiast po tym konkretnym polu? Czy to jest specyficzne dla tej klasy? Istnieje ~ 6 pól, które podążają za 'stack', przed konstruktorem klasy i mniej więcej tyle samo przed nim. – Josh
Założę, że jest tam tylko dlatego, że manipuluje polem stosu za pomocą wywołania Push. –