Estoy navegando a través de la fuente de Android, como que la estoy leyendo, y me he topado con una extraña porción de código en Android.Util.JsonReader
. Es el siguiente:Peculiar Alcance de Java
private final List<JsonScope> stack = new ArrayList<JsonScope>();
{
push(JsonScope.EMPTY_DOCUMENT);
}
¿Qué está haciendo esto exactamente? Es decir, el alcance inmediatamente siguiente a la asignación new
? Si entiendo correctamente, cada vez que se crea una instancia de esta clase, JsonReader
, (no estática, ¿no?), stack
se inicializará aquí, en lugar de a través de this.stack = ...
en el constructor, ¿correcto?
¿Qué hace el alcance? ¿Se ejecuta después de que se inicializa stack
? Estoy un poco confundido aquí, en cuanto al nombre de este patrón y su uso.
¿Cuál es entonces lo activa? ¿Pueden ser múltiples y diferentes, presumiblemente después de diferentes campos de clase? – Josh
Gracias, esos son algunos excelentes enlaces. Sin embargo, una pregunta, ¿por qué aparece inmediatamente después de ese campo en particular? ¿Es solo específico de esta clase? Hay ~ 6 campos que siguen a 'stack', antes del constructor de la clase, y aproximadamente el mismo monto que lo precede. – Josh
Supongo que está ahí porque manipula el campo de pila a través de la llamada directa. –