初期化の順番を理解するのに問題があります。これは私が仮定ためです:イニシャライザブロックや変数定義などはどのような順序で実行されますか? (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.
}
}
私ができますなぜエラーがないのかわかりません
b=0;
どのコンパイラを使用していますか? Oracles javac?またはいくつかのIDE(少なくともEclipseは独自のコンパイラを持っています) –
EclipseとOracles javacはこのシナリオで同じように動作します。 – aioobe
eclipseを使用しています。 – Untitled