Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java가 생성자에서 정적 최종 변수의 초기화를 허용하지 않는 이유는 무엇입니까?

<시간/>

변수를 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