У меня проблема с пониманием порядка, в котором происходит инициализация. это порядок я предположил:В каком порядке выполняются блок инициализации и определения переменных и т. Д.? (в java)
*Once per
1. Static variable declaration
2. Static block
*Once per object
3. variable declaration
4. initialization block
5. constructor
, но в соответствии с этим кодом я, очевидно, неправильно:
class SomethingWrongWithMe
{
{
b=0; //no. no error here.
int a = b; //Error: Cannot reference a field before it is defined.
}
int b = 0;
}
И ошибка исчезнет, если я это сделать:
class SomethingWrongWithMe
{
int b = 0;
{
b=0;
int a = b; //The error is gone.
}
}
я могу 't выяснить, почему нет ошибки на
b=0;
Какой у вас компилятор? Оракул Джавак? Или некоторые IDE (по крайней мере Eclipse приносит свой собственный компилятор) –
Eclipse и Oracles javac ведет себя одинаково в этом сценарии. – aioobe
с использованием eclipse .. – Untitled