私はJavaでさまざまなタイプの変数の初期化を実験していました。コンストラクタで最終変数(final int bなど)と静的変数(static int Cなど)を初期化できますが、コンストラクタでstatic final変数(static final int dなど)を初期化できません。 IDEにもエラーメッセージが表示されます。なぜJavaがコンストラクタ内のstatic final変数(static final int dなど)の初期化を許可しないのですか?
なぜJavaがコンストラクタでstatic final変数の初期化を許可しないのですか?
public class InitialisingFields {
int a;
final int b;
static int c;
static final int d;
InitialisingFields(){
a = 1;
b = 2;
c = 3;
d = 4;
}
public static void main(String[] args) {
InitialisingFields i = new InitialisingFields();
}
}
エラーメッセージ:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - cannot assign a value to final variable d
at JTO.InitialisingFields.<init>(InitialisingFields.java:22)
at JTO.InitialisingFields.main(InitialisingFields.java:26)
Java Result: 1
ありがとう!今はすべてが理にかなっています! – Thor