클래스 내에서 중괄호로 묶인 코드 조각으로, 클래스가 인스턴스화될 때 자동으로 호출됩니다.
예:
으아악
그런 다음 new Person()이 호출되면 123이 인쇄됩니다.
질문하신 코드의 경우 동적 초기화 블록이 익명 클래스에 배치되어 있어 조금 이상하고 이해하기 어려워 보입니다. 하지만 결국 익명 클래스도 클래스이므로 합법적입니다. 결과적으로 익명 클래스가 인스턴스화되면 해당 코드가 실행되고 여러 요소가 컬렉션에 추가됩니다. 이는 컬렉션을 초기화하는 것과 같습니다.
어떤 Java 버전부터 지원했는지는 잘 기억나지 않지만 오래전부터 지원한 것으로 추정되며 Java 5부터 지원해야 할 것 같습니다.
이 구문을 Java의 동적 초기화 블록이라고 합니다.
클래스 내에서 중괄호로 묶인 코드 조각으로, 클래스가 인스턴스화될 때 자동으로 호출됩니다.
예:
으아악그런 다음
new Person()
이 호출되면123
이 인쇄됩니다.질문하신 코드의 경우 동적 초기화 블록이 익명 클래스에 배치되어 있어 조금 이상하고 이해하기 어려워 보입니다. 하지만 결국 익명 클래스도 클래스이므로 합법적입니다. 결과적으로 익명 클래스가 인스턴스화되면 해당 코드가 실행되고 여러 요소가 컬렉션에 추가됩니다. 이는 컬렉션을 초기화하는 것과 같습니다.
어떤 Java 버전부터 지원했는지는 잘 기억나지 않지만 오래전부터 지원한 것으로 추정되며 Java 5부터 지원해야 할 것 같습니다.
마지막으로 이런 방식으로 컬렉션을 초기화하는 것은 마치 흑마법처럼 보입니다.
또한 정적 초기화 블록을 확인하여 차이점을 비교할 수도 있습니다.
안의 중괄호는 초기화 블록으로, 새
의 생성자 호출 사이에 실행됩니다.중괄호는 익명의 내부 클래스가 아니라 생성 방법 이전에 실행되는 것으로 보이는 생성 코드 블록입니다(명확하게 기억나지 않습니다). 생성 방법과 같은 것으로 간주합니다.