Messager — 프로세서 메시지 보고 인터페이스
Messager — 프로세서 메시지 보고 인터페이스
Messager는 어노테이션 프로세서가 오류 메시지, 경고, 기타 공지를 보고할 수 있는 방법을 제공하는 인터페이스예요. 메시지의 위치 힌트로 요소, 어노테이션, 어노테이션 값을 전달할 수 있어요. 이런 위치 힌트는 사용할 수 없거나 근사값일 수 있어요. 오류 종류(kind)로 메시지를 출력하면 오류가 발생해요.
본문
public interface Messager
API 참고
이 인터페이스의 메서드가 "출력"한 메시지는 System.out이나 System.err 같은 위치에 텍스트 출력으로 나타날 수도 있고 아닐 수도 있어요. 구현은 이 정보를 창의 메시지 같은 다른 방식으로 제시할 수도 있어요.
메서드
void printMessage(Diagnostic.Kind kind, CharSequence msg)— 지정된 종류의 메시지를 출력해요.kind는 메시지의 종류,msg는 메시지(없으면 빈 문자열)예요.void printMessage(Diagnostic.Kind kind, CharSequence msg, Element e)— 요소의 위치에 지정된 종류의 메시지를 출력해요.e는 위치 힌트로 사용할 요소예요.void printMessage(Diagnostic.Kind kind, CharSequence msg, Element e, AnnotationMirror a)— 어노테이션된 요소의 어노테이션 미러 위치에 메시지를 출력해요.a는 위치 힌트로 사용할 어노테이션이에요.void printMessage(Diagnostic.Kind kind, CharSequence msg, Element e, AnnotationMirror a, AnnotationValue v)— 어노테이션된 요소의 어노테이션 미러 안의 어노테이션 값 위치에 메시지를 출력해요.v는 위치 힌트로 사용할 어노테이션 값이에요.default void printError(CharSequence msg)— 오류를 출력해요. 기본 구현은printMessage(Diagnostic.Kind.ERROR, msg)와 동일해요. Java 18부터.default void printError(CharSequence msg, Element e)— 요소 위치에 오류를 출력해요. 기본 구현은printMessage(Diagnostic.Kind.ERROR, msg, e)와 동일해요. Java 18부터.default void printWarning(CharSequence msg)— 경고를 출력해요. 기본 구현은printMessage(Diagnostic.Kind.WARNING, msg)와 동일해요. Java 18부터.default void printWarning(CharSequence msg, Element e)— 요소 위치에 경고를 출력해요. Java 18부터.default void printNote(CharSequence msg)— 공지를 출력해요. 기본 구현은printMessage(Diagnostic.Kind.NOTE, msg)와 동일해요. Java 18부터.default void printNote(CharSequence msg, Element e)— 요소 위치에 공지를 출력해요. Java 18부터.
어떻게 쓰일까요?
어노테이션 프로세서는 처리 과정에서 오류·경고·알림을 보고해야 해요. printMessage(Diagnostic.Kind.ERROR, ...)로 오류를 보고하면 컴파일이 실패하게 만들고, WARNING은 경고만 남기고, NOTE는 정보성 메시지예요. 위치 힌트(요소, 어노테이션, 값)를 전달하면 IDE·컴파일러가 정확한 위치에 메시지를 표시할 수 있어요.
관련
ProcessingEnvironment.getLocale()참고