以下のコードは正当な正参照の場合ですか?もしそうなら、なぜですか?Java Legal Forward Referencing
public class MyClass
{
private static int x = getValue();
private static int y = 5;
private static int getValue()
{
return y;
}
public static void main(String[] args)
{
System.out.println(x);
}
}
スタティック変数とメソッドではない場合はどうなりますか? – Vibhor
私はその動作が同じであると信じています - 初期化はまずすべてをデフォルト値に設定し、次にそれぞれを指定された値で初期化してからコンストラクタを呼び出します。 – templatetypedef
これは、btwがコンストラクタから非最終(またはプライベート)メソッドを決して呼び出さない理由の1つです。初期化されていない最終的なフィールドを見ていても、誰かがそのメソッドをオーバーライドし、まだ作成されていない「this」を参照するのは簡単です。 – yshavit