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

한 번만 설정할 수 있지만 Java에서 최종적이지 않은 변수를 만드는 방법은 무엇입니까?

<시간/>

최종 변수를 초기화하면 그 값을 더 이상 수정할 수 없습니다. 즉, 최종 변수에 한 번만 값을 할당할 수 있습니다. 최종 변수에 값을 할당하려고 하면 컴파일 시간 오류가 생성됩니다.

예시

public class FinalExample {
   final int j = 100;
   public static void main(String args[]){
      FinalExample obj = new FinalExample();
      obj.j = 500;
      System.out.println(obj.j);
   }
}

컴파일 시간 오류

FinalExample.java:6: error: cannot assign a value to final variable j
   obj.j = 500;
      ^
1 error

"최종" 기능 달성

final 키워드를 실제로 사용하지 않고 최종 기능을 달성하려면 -

변수를 비공개로 만들고 setter 메서드를 사용하여 값을 설정하여 두 번째로 호출하려고 하면 이전 값을 설정하거나 예외를 throw해야 합니다.

예시

public class FinalExample {
   private Integer num;
   public void setNum(int num){
      this.num = this.num == null ? num : this.num;
   }
   private String data;
   public void setData(String data) {
      this.data = this.data == null ? data : demo();
   }
   public String demo() {
      String msg = "You cannot set value to the variable data for the second time";
      throw new RuntimeException(msg);
   }
   public static void main(String args[]){
      FinalExample obj = new FinalExample();
      obj.setNum(200);
      System.out.println(obj.num);
      obj.setNum(500);
      System.out.println(obj.num);
      obj.setData("hello");
      obj.setData("sample data");
   }
}

출력

200
200
Exception in thread "main" java.lang.RuntimeException: You cannot set value to the variable data for the second time
at SEPTEMBER.remaining.FinalExample.demo(FinalExample.java:15)
at SEPTEMBER.remaining.FinalExample.setData(FinalExample.java:12)
at SEPTEMBER.remaining.FinalExample.main(FinalExample.java:26)