Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 인스턴스 이니셜라이저 블록을 사용하는 이유와 활용 방법

인스턴스 이니셜라이저 블록이란?

Java의 인스턴스 이니셜라이저 블록(Instance Initializer Block)은 생성자와 매우 유사하게 동작하는 코드 블록입니다. 객체가 생성될 때마다 한 번씩 호출되며, 인스턴스 변수의 초기값을 설정하는 데 사용할 수 있습니다.

생성자와의 가장 큰 차이점은 이니셜라이저 블록은 클래스 내 모든 생성자에서 공통으로 실행된다는 점입니다. 따라서 여러 개의 오버로딩된 생성자가 있을 때 중복 코드를 줄이고 초기화 로직을 한 곳에 모아 관리할 수 있습니다.

기본 예제

아래 예제를 통해 인스턴스 이니셜라이저 블록의 동작을 확인해 보겠습니다.

public class Tester {
    public int a;
    { a = 10; }

    public static void main(String[] args) {
        System.out.println(new Tester().a);
    }
}

위 코드를 실행하면 a의 값으로 10이 출력됩니다. 객체가 생성되는 시점에 이니셜라이저 블록이 실행되어 변수 a에 10이 할당되기 때문입니다.

인스턴스 이니셜라이저 블록을 사용하는 이유

  • 생성자 간 중복 제거: 여러 생성자가 있어도 공통 초기화 코드를 한 번만 작성하면 됩니다.
  • 익명 내부 클래스 초기화: 익명(anonymous) 클래스는 별도의 생성자를 정의할 수 없기 때문에, 이니셜라이저 블록이 사실상 유일한 초기화 수단입니다.
  • 가독성 향상: 필드 선언과 초기화 로직을 가까운 곳에 배치하여 코드의 의도를 명확하게 표현할 수 있습니다.

실행 순서

객체 생성 시 실행 순서는 다음과 같습니다.

  1. 인스턴스 변수의 기본값 또는 선언 시 초기값 할당
  2. 인스턴스 이니셜라이저 블록 실행
  3. 생성자 본문 실행

즉, 이니셜라이저 블록은 항상 생성자보다 먼저 실행됩니다. 단순한 초기화라면 필드 선언과 함께 값을 지정하는 것이 더 간결할 수 있지만, 여러 생성자에서 공통으로 필요한 복잡한 초기화 로직이 있다면 인스턴스 이니셜라이저 블록이 효과적인 선택이 됩니다.