AbstractProcessor — 어노테이션 프로세서의 추상 슈퍼클래스
AbstractProcessor — 어노테이션 프로세서의 추상 슈퍼클래스
AbstractProcessor는 대부분의 구체적인 어노테이션 프로세서를 위한 편리한 슈퍼클래스로 설계된 추상 어노테이션 프로세서예요. 이 클래스는 어노테이션 값을 검사해서 하위 타입이 지원하는 옵션, 어노테이션 인터페이스, 소스 버전을 계산해요.
본문
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나 빌드 도구에서 어노테이션 기반 코드 생성을 쉽게 구현할 수 있어요.