TypeMirror — 타입 미러 인터페이스
TypeMirror — 타입 미러 인터페이스
TypeMirror는 자바 프로그래밍 언어의 타입을 나타내는 인터페이스예요. 타입에는 프리미티브 타입, 선언 타입(클래스·인터페이스 타입), 배열 타입, 타입 변수, null 타입이 포함돼요. 또한 와일드카드 타입 인자, 실행 가능 요소의 시그니처·반환 타입, 그리고 패키지·모듈·키워드 void에 대응하는 의사 타입도 나타내요.
타입은 Types의 유틸리티 메서드로 비교해야 해요. 특정 타입이 항상 같은 객체로 표현된다는 보장은 없어요. TypeMirror 객체의 클래스에 기반한 연산을 구현하려면 방문자(visitor)를 쓰거나 getKind() 결과를 사용해요. instanceof는 이 모델링 계층에서 객체의 실제 클래스를 결정하는 신뢰할 만한 관용구가 아닐 수 있는데, 한 구현이 여러 TypeMirror 하위 인터페이스를 하나의 객체로 구현할 수 있기 때문이에요.
본문
AnnotatedConstruct를 확장하며, 하위 인터페이스로 ArrayType, DeclaredType, ErrorType, ExecutableType, IntersectionType, NoType, NullType, PrimitiveType, ReferenceType, TypeVariable, UnionType, WildcardType이 있어요. 관련 요소로 Element, 유틸리티로 Types가 있어요.
선언은 다음과 같아요.
public interface TypeMirror extends AnnotatedConstruct
주요 메서드는 다음과 같아요.
| Modifier and Type | Method | 설명 |
|---|---|---|
<R, P> R |
accept(TypeVisitor<R,P> v, P p) |
이 타입에 방문자를 적용해요. |
<A extends Annotation> A |
getAnnotation(Class<A> annotationType) |
지정된 타입의 어노테이션이 있으면 반환, 없으면 null. |
List<? extends AnnotationMirror> |
getAnnotationMirrors() |
이 구성 요소에 직접 존재하는 어노테이션들을 반환해요. |
TypeKind |
getKind() |
이 타입의 종류를 반환해요. |
String |
toString() |
정보를 담은 문자열 표현을 반환해요. |
getKind()는 INT, DECLARED, ARRAY, TYPEVAR 같은 종류를 알려주고, 이 값을 기반으로 타입별 처리를 분기해요. 관련 명세 절: JLS 4.1~4.9, 10.1. Since: 1.6.