이것은 잘 알려지지 않은 언어 능력인 것 같습니다. 나는 대부분의 사람들이 Java에서 정적 상수를 다음과 같이 초기화하는 것을 봅니다.
다음과 같이 코드 코드를 복사합니다.
public static final Map<String, String> DATA = new TreeMap<String, String>();
공전
{
DATA.put("a", "A");
//ㅋㅋㅋㅋㅋㅋㅋ
}
클래스의 정적 블록을 사용하여 DATA를 초기화하는 방법은 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
public static final Map<String, String> DATA = new TreeMap<String, String>()
{{
this.put("a", "A");
//ㅋㅋㅋㅋㅋㅋㅋ
}};
이는 실제로 익명 클래스의 특성을 활용합니다. 내부 {는 익명 하위 클래스의 생성자로 사용되므로 초기화 코드를 직접 삽입할 수 있습니다. 이 작은 언어 트릭은 일반적이지 않지만 더 실용적입니다.