Ho difficoltà a capire l'ordine in cui avviene l'inizializzazione. questo è l'ordine che ho pensato:In che ordine vengono eseguiti il blocco inizializzatore e le definizioni delle variabili e così via? (in Java)
*Once per
1. Static variable declaration
2. Static block
*Once per object
3. variable declaration
4. initialization block
5. constructor
ma secondo questo codice Sono ovviamente sbagliato:
class SomethingWrongWithMe
{
{
b=0; //no. no error here.
int a = b; //Error: Cannot reference a field before it is defined.
}
int b = 0;
}
E l'errore scomparirebbe se faccio questo:
class SomethingWrongWithMe
{
int b = 0;
{
b=0;
int a = b; //The error is gone.
}
}
posso capisco perché non c'è un errore su
b=0;
Che compilatore stai utilizzando? Oracles javac? O qualche IDE (almeno Eclipse porta il proprio compilatore) –
Eclipse e Oracles javac si comporta allo stesso modo in questo scenario. – aioobe
utilizzando eclissi .. – Untitled