Elements — 프로그램 요소를 다루는 유틸리티 인터페이스

Elements — 프로그램 요소를 다루는 유틸리티 인터페이스

어노테이션 프로세서 작업 중에는 프로그램 요소(패키지, 클래스, 메서드, 필드 등)를 조회하거나 비교하는 일이 많아요. Elements 인터페이스는 이런 작업을 위한 유틸리티 메서드 모음이에요. 이름·모듈·패키지 기준으로 요소를 찾고, 요소의 특성을 묻고, 문서나 요약 정보를 얻는 데 사용돼요.

이 인터페이스는 컴파일 환경(ProcessingEnvironment)이 제공해 주는 객체로 얻을 수 있어요. 어노테이션 프로세서에서 processingEnv.getElementUtils()로 접근하는 것이 대표적인 사용법이에요.

출처: Java API Reference

본문

Elements는 인터페이스이며, 요소를 찾고 다루는 다양한 메서드를 선언해요. 주요 메서드는 다음과 같아요.

PackageElement getPackageElement(CharSequence name)
default PackageElement getPackageElement(ModuleElement module, CharSequence name)
default Set<? extends PackageElement> getAllPackageElements(CharSequence name)
TypeElement getTypeElement(CharSequence name)
default TypeElement getTypeElement(ModuleElement module, CharSequence name)
default Set<? extends TypeElement> getAllTypeElements(CharSequence name)
default ModuleElement getModuleElement(CharSequence name)
default Set<? extends ModuleElement> getAllModuleElements()

주요 기능을 정리하면 이래요.

  • 요소 찾기getPackageElement, getTypeElement, getModuleElement로 이름을 주고 패키지·타입·모듈 요소를 얻어요. 모듈을 지정하는 오버로드도 있어요. 이름을 정확히 모를 때는 getAll*Elements 계열로 여러 개를 한 번에 조회할 수 있어요.
  • 문서화된 이름getDocComment(element)로 요소의 Javadoc 주석을, getBinaryName/getConstantExpression 같은 메서드로 바이너리 이름·상수 표현식을 얻어요.
  • 요소 실행runDocComments 등으로 요소를 갱신하거나 실행하는 동작도 있어요.

호환성 주의: 이 인터페이스는 향후 자바 릴리스에서 메서드가 추가될 수 있어요. 그래서 직접 구현하기보다는 제공되는 구현을 그대로 쓰는 것이 권장돼요. 모든 메서드가 default로 선언된 것은 아니므로, 구현체가 필요한 메서드를 추상으로 남기기도 해요.

이 인터페이스는 javax.lang.model.util 패키지에 속하며, Types 인터페이스(타입을 다루는 유틸리티)와 자주 함께 사용돼요. 요소와 타입을 오가며 처리하는 어노테이션 프로세서 로직의 핵심 기반이에요.

더 알아보기 (Learn more)