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