인스턴스 이니셜라이저 블록(Instance Initializer Block)은 객체의 속성을 초기화하는 데 사용되는 특수한 코드 블록입니다. 생성자보다 먼저 실행되며, 객체가 생성될 때마다 호출된다는 특징이 있습니다.
인스턴스 이니셜라이저 블록이란?
인스턴스 이니셜라이저 블록은 클래스 내부에 중괄호 { }만으로 선언되는 블록으로, 다음과 같은 특징을 가집니다.
- 생성자 실행 전에 호출됩니다.
- 객체가 생성될 때마다 매번 실행됩니다.
- 여러 생성자에서 공통적으로 수행해야 하는 초기화 로직을 한 곳에 모아 코드 중복을 줄일 수 있습니다.
예제 코드
아래 예제를 통해 인스턴스 이니셜라이저 블록과 생성자의 실행 순서를 확인할 수 있습니다.
public class Tester {
{
System.out.println("Inside instance initializer block");
}
Tester(){
System.out.println("Inside constructor");
}
public static void main(String[] arguments) {
Tester test = new Tester();
Tester test1 = new Tester();
}
}실행 결과
Inside instance initializer block Inside constructor Inside instance initializer block Inside constructor
실행 순서 분석
실행 결과를 보면 new Tester()로 객체를 생성할 때마다 다음과 같은 순서로 코드가 실행됩니다.
- 먼저 인스턴스 이니셜라이저 블록이 실행되어 "Inside instance initializer block"이 출력됩니다.
- 그다음 생성자가 실행되어 "Inside constructor"가 출력됩니다.
객체를 두 번 생성했기 때문에 각각의 메시지가 두 번씩 출력된 것을 확인할 수 있습니다. 이처럼 인스턴스 이니셜라이저 블록은 객체 생성 시점마다 항상 생성자보다 먼저 수행됩니다.
정리
인스턴스 이니셜라이저 블록은 여러 생성자에 공통적인 초기화 작업이 필요할 때 유용하게 활용할 수 있습니다. 다만 실무에서는 가독성과 명확성을 위해 별도의 초기화 메서드나 생성자 오버로딩을 사용하는 경우가 많으므로, 상황에 맞게 적절히 선택하여 사용하는 것이 좋습니다.