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

Java 인스턴스 이니셜라이저 블록 완벽 정리: 개념부터 실행 순서까지

인스턴스 이니셜라이저 블록(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()로 객체를 생성할 때마다 다음과 같은 순서로 코드가 실행됩니다.

  1. 먼저 인스턴스 이니셜라이저 블록이 실행되어 "Inside instance initializer block"이 출력됩니다.
  2. 그다음 생성자가 실행되어 "Inside constructor"가 출력됩니다.

객체를 두 번 생성했기 때문에 각각의 메시지가 두 번씩 출력된 것을 확인할 수 있습니다. 이처럼 인스턴스 이니셜라이저 블록은 객체 생성 시점마다 항상 생성자보다 먼저 수행됩니다.

정리

인스턴스 이니셜라이저 블록은 여러 생성자에 공통적인 초기화 작업이 필요할 때 유용하게 활용할 수 있습니다. 다만 실무에서는 가독성과 명확성을 위해 별도의 초기화 메서드나 생성자 오버로딩을 사용하는 경우가 많으므로, 상황에 맞게 적절히 선택하여 사용하는 것이 좋습니다.