AbstractProcessor — 어노테이션 프로세서의 추상 슈퍼클래스

AbstractProcessor — 어노테이션 프로세서의 추상 슈퍼클래스

AbstractProcessor는 대부분의 구체적인 어노테이션 프로세서를 위한 편리한 슈퍼클래스로 설계된 추상 어노테이션 프로세서예요. 이 클래스는 어노테이션 값을 검사해서 하위 타입이 지원하는 옵션, 어노테이션 인터페이스, 소스 버전을 계산해요.

출처: Java API Reference

본문

public abstract class AbstractProcessor extends Object implements Processor

게터 메서드들은 프로세서가 초기화된 후 사용 가능한 시설(facilities)을 사용해 주목할 만한 조건에 대해 경고를 발행할 수 있어요. 하위 클래스는 해당 메서드에 대한 일반적인 Processor 계약을 따르는 한, 이 클래스의 어떤 메서드든 구현과 명세를 자유롭게 오버라이드할 수 있어요.

필드

  • protected ProcessingEnvironment processingEnv — 도구 프레임워크가 제공하는 처리 환경.

생성자

  • protected AbstractProcessor() — 하위 클래스에서 호출하기 위한 생성자예요.

메서드

  • Set<String> getSupportedOptions() — 프로세서 클래스가 SupportedOptions로 어노테이션되어 있으면 그 어노테이션과 같은 문자열 집합의 수정 불가능한 집합을 반환해요. 그렇지 않으면 빈 집합을 반환해요.
  • Set<String> getSupportedAnnotationTypes() — 프로세서 클래스가 SupportedAnnotationTypes로 어노테이션되어 있으면 그 문자열 집합과 같은 수정 불가능한 집합을 반환해요. 그렇지 않으면 빈 집합을 반환해요. 소스 버전이 모듈을 지원하지 않으면(즉 RELEASE_8 이하), 이름에서 선행 모듈 접두사를 제거해요.
  • SourceVersion getSupportedSourceVersion() — 프로세서 클래스가 SupportedSourceVersion으로 어노테이션되어 있으면 그 어노테이션의 소스 버전을 반환해요. 그렇지 않으면 SourceVersion.RELEASE_6을 반환해요.
  • void init(ProcessingEnvironment processingEnv)processingEnv 필드를 인자 값으로 설정해 처리 환경으로 프로세서를 초기화해요. 같은 객체에서 이 메서드를 두 번 이상 호출하면 IllegalStateException이 발생해요.
  • boolean isInitialized() — 이 객체가 초기화되었으면 true, 아니면 false를 반환해요.
  • Iterable<? extends Completion> getCompletions(Element element, AnnotationMirror annotation, ExecutableElement member, String userText) — 빈 completions iterable을 반환해요.

특징

어노테이션 프로세서를 만들 때 AbstractProcessor를 상속받아 process 메서드만 구현하면 돼요. 주로 @SupportedAnnotationTypes, @SupportedSourceVersion 어노테이션으로 지원 범위를 선언해요. 이렇게 하면 IDE나 빌드 도구에서 어노테이션 기반 코드 생성을 쉽게 구현할 수 있어요.

더 알아보기 (Learn more)