前方参照メソッドを実行するときにコンパイラで発生していることは、宣言されていない別の変数の値をどのように割り当てますか?そして、私たちはその内部の方法を使うことができますか?しかし、なぜ静的ブロックで変数を使用できないのでしょうか?私たちは直接のような値を割り当てた場合たとえば、メソッド内でのみ前方参照が可能な理由
public class Forward {
static int i = test();
static int test() {
System.out.println(j);
j = 20;
return j;
}
static {
System.out.println(j);
j = 20;
}
static int j;
}
は:
int i = j;
int j = 10;
なぜ、このコードはコンパイルされませんか?方法だけではどのように可能ですか?コンパイラは内部参照をどのようにコンパイルしますか?宣言はすべての変数と初期化のためにまず起こっていますか?詳細に説明してください。言い換えれば
The declaration of a class variable in a class or interface C appears textually after a use of the class variable;
、明らかに、それは「前方にする必要があります
"詳細に説明" あなたは[JLS 8.8.3]を読みました(https://docs.oracle.com/javase/specs/jls /se8/html/jls-8.html#jls-8.3.3)? –
あなたの投稿をありがとう。私はそれを読んだが、私は流れについての明確な画像を得ることができない。前方参照を使用する際に従わなければならない規則はありますか?それを詳しく説明できますか? – Dhivakar