Posts 클래스 초기화 블록
Post
Cancel

클래스 초기화 블록

클래스 초기화 블록

어떤 클래스에 static 변수를 추가했더니 github copilot이 다음과 같은 문장을 추천해주었다.

1
2
3
4
5
6
7
8
9
public class Crypto {

	private static CryptoProperties cryptoProperties;

  // github copilot suggestion
	static {
		cryptoProperties = new CryptoProperties();
	}
	...

처음보는 문법이기에 조사해보았더니 클래스 초기화 블록이라는 단어를 접할 수 있었다.


클래스 초기화 블록

클래스의 멤버변수를 초기화 하는 방법으로는 다음과 같은 방법들이 있다.

  1. 생성자

  2. 필드 초기화

    1
    2
    3
    4
    
    public class Location {
      int x = 4;
      int y = 6;
    }
    
  3. 초기화 블록

이 중에서 필드 초기화는 간결하지만 문법상 한줄짜리 구문만 초기화 할 수 있다는 단점이 있다. 이 단점을 보완하기 위해 나온 것이 초기화 블록이다.

초기화 블록은 다음과 같이 사용한다.

1
2
3
4
5
6
7
8
9
10
11
public class Location {
  int x;
  int y;
  // 초기화 블록
  {
    x = 5;
    x += 10;
    y = 12;
    y -= 8;
  }
}

위와 같이 초기화 블록이 선언되어있으면, 필드 초기화와 같이 인스턴스를 생성할 자동으로 호출된다. 또한 이 초기화 블록은 할당만을 공간이 아니라 다음과 같이 할당문이 아닌 실행문을 사용할 수도 있다.

1
2
3
4
5
6
7
8
public class Location {
  int x;
  int y;
  // 초기화 블록
  {
    System.out.println("초기화 블록 호출")
  }
}

static 초기화 블록

초기화 블록은 static 멤버변수를 초기화할 때도 사용할 수 있다.

1
2
3
4
5
6
7
8
9
public class Location {
  static int x;
  static int y;
  // 초기화 블록
  static {
    x = 5;
    y = 10;
  }
}

위와 같이 일반 초기화 블록 앞에 static 키워드를 붙이면 된다.

This post is licensed under CC BY 4.0 by the author.

pinpoint

Valid vs Validatedated

Comments powered by Disqus.