2.4.3 정적 초기화 블록
앞에서는 정적 변수를 선언하면서 초기화했다. 하지만 초기화 작업이 추가로 필요할 때도 있다. 이런 초기화 작업은 정적 초기화 블록(static initialization block) 안에 넣으면 된다.
public class CreditCardForm {
private static final ArrayList<Integer> expirationYear = new ArrayList<>();
static {
// 다음 20개 연도를 배열 리스트에 추가한다.
int year = LocalDate.now().getYear();
for (int i = year; i <= year + 20; i++) {
expirationYear.add(i);
}
}
...
}
정적 초기화는 클래스를 처음 로드할 때 일어난다. 인스턴스 변수와 마찬가지로 정적 변수를 명시적으로 다른 값으로 설정하지 않으면 0이나 false 또는 null이 된다. 모든 정적 변수 초기화와 정적 초기화 블록은 클래스 선언 안에 나타난 순서로 실행된다.