변수를 static 및 final로 선언하는 경우 선언 시 또는 정적 블록에서 초기화해야 합니다. 생성자에서 초기화하려고 하면 컴파일러는 값을 재할당하려고 한다고 가정하고 컴파일 시간 오류를 생성합니다 -
예시
class Data { static final int num; Data(int i) { num = i; } } public class ConstantsExample { public static void main(String args[]) { System.out.println("value of the constant: "+Data.num); } }
컴파일 시간 오류
ConstantsExample.java:4: error: cannot assign a value to final variable num num = i; ^ 1 error
이 프로그램이 작동하도록 하려면 정적 블록의 최종 정적 변수를 다음과 같이 초기화해야 합니다. -
예시
class Data { static final int num; static { num = 1000; } } public class ConstantsExample { public static void main(String args[]) { System.out.println("value of the constant: "+Data.num); } }
출력
value of the constant: 1000