더북(TheBook)

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이 된다. 모든 정적 변수 초기화와 정적 초기화 블록은 클래스 선언 안에 나타난 순서로 실행된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.