[Java] static 초기화 블록

벼랑 끝 코딩·2025년 4월 24일

Java

목록 보기
40/40

최근 자바를 공부하면서 난생 처음 보는 코드를 발견했다.
바로 static 키워드로만 이루어진 블록이었다.
나름 열심히 자바 공부를 하면서 객체나 메서드를 제외하고
자바 강의에서 나오는 어지간한 키워드는 읽을 수 있다고 생각했는데 적지 않게 놀랐다.

처음 발견하게 된 static 초기화 블록에 대해 살펴보자.

static 초기화 블록

class Clazz {

	static Map<String, Integer> staticMap;
	
    static {
    	staticMap = new HashMap<>();  // ** static field(정적 필드) 초기화 **
        staticMap.put("value1", 1);
        staticMap.put("value2", 2);
    }
    
    // ** 위에서부터 아래로 순서대로 실행 **
    static {
    	// 코드
    }
    
    ..
}

static 초기화 블록이란, 선언된 클래스가 JVM에 처음 로딩될 때 단 한번 실행되는 블록이다.
클래스 레벨에서 실행되는 코드로 주로 정적 필드를 초기화 하는 데에 사용된다.
클래스 레벨에서 실행되기 때문에 객체를 생성할 필요가 없다.

한 클래스에 여러개의 static 초기화 블록을 선언할 수 있고 위에서부터 순서대로 실행된다.
일반 필드보다 주로 Collection과 같은 복잡한 구조를 초기화하거나
라이브러리를 초기화하는 데에 유용하다.

마치 Spring에서 @PostConstruct와 유사한 기능이라는 생각이 들었다.
순수 자바 코드로 코딩할 때에 유용하게 사용할 수 있을듯 하다.
테스트 시에도 참고해서 사용하자.

profile
복습에 대한 비판과 지적을 부탁드립니다

0개의 댓글