Tengo problemas para entender el orden en que ocurre la inicialización. este es el orden Asumí:¿En qué orden se ejecutan el bloque de inicializador y las definiciones de variables, etc.? (en java)
*Once per
1. Static variable declaration
2. Static block
*Once per object
3. variable declaration
4. initialization block
5. constructor
pero de acuerdo con este código Obviamente estoy equivocado:
class SomethingWrongWithMe
{
{
b=0; //no. no error here.
int a = b; //Error: Cannot reference a field before it is defined.
}
int b = 0;
}
Y el error desaparecería si hago esto:
class SomethingWrongWithMe
{
int b = 0;
{
b=0;
int a = b; //The error is gone.
}
}
que pueda 't averiguar por qué no hay un error en
b=0;
¿Qué compilador estás usando? Oracles javac? O algunos IDE (al menos Eclipse trae su propio compilador) –
Eclipse y Oracles javac se comporta de la misma manera en este escenario. – aioobe
usando eclipse .. – Untitled