결론: 네, 가능합니다!
Java에서 빈(final) 변수, 즉 선언 시점에 값을 할당하지 않은 final 변수는 생성자(constructor) 또는 인스턴스 초기화 블록(instance initialization block)에서 반드시 한 번 초기화할 수 있습니다.
빈 final 변수란?
final 키워드가 붙었지만 선언과 동시에 값이 할당되지 않은 변수를 '빈(final)' 변수라고 합니다. 이 변수는 한 번만 초기화될 수 있으며, 초기화 이후에는 값을 변경할 수 없습니다.
예제 코드
다음은 생성자와 인스턴스 초기화 블록을 활용한 예시입니다.
class Example {
final int value; // 빈 final 변수
// 생성자에서 초기화
Example() {
value = 10;
}
}
class Example2 {
final int value;
// 인스턴스 초기화 블록에서 초기화
{
value = 20;
}
}
주의할 점
- 정적(static) 빈 final 변수는 생성자나 인스턴스 초기화 블록이 아닌, static 초기화 블록에서 초기화해야 합니다.
- 빈 final 변수는 모든 생성자 경로에서 정확히 한 번 초기화되어야 하며, 그렇지 않으면 컴파일 오류가 발생합니다.