객체는 여러 개를 생성하지만, 한 번만 호출되어야 하는 코드가 있다면 "static 블록"을 사용하면 된다. static 블록은 다음과 같이 선언하여 사용한다.
static{
//딱 한번만 수행되는 코드
}
이 static 블록은 객체가 생성되기 전에 한 번만 호출되고, 그 이후에는 호출하려고 해도 호출할 수가 없다. 그리고, 클래스 내에 선언되어 있어야 하며, 메소드 내에서는 선언할 수 없다. 즉, 인스턴스 변수나 클래스 변수와 같이 어떤 메소드나 생성자에 속해있으면 안된다.
static 블록은 여러 개를 선언할 수 있으며, 선언되어 있는 순서는 매우 중요하다. 왜냐하면, 선언된 순서대로 블록들이 차례대로 호출되기 때문이다.
이와 같은 static 블록은 클래스를 초기화할 때 꼭 수행되어야 하는 작업이 있을 경우 유용하게 사용할 수 있다.
추가로, static 블록 안에서는 static한 것들만 호출할 수 있다. static 클래스에서는 static하지 않은 변수나 메소드를 사용할 수 없다. 생성자는 static 키워드를 붙이지 않아도 된다. 생성자가 호출되기 전에 static 블록들이 먼저 호출된다. 또 static 블록들은 단지 한 번씩만 호출된다.
static 블록은 생성자가 불리지 않더라도, 클래스에 대한 참조가 발생하자마자 호출된다.
참고