Element — 프로그램 요소 인터페이스
Element — 프로그램 요소 인터페이스
Element는 모듈, 패키지, 클래스, 메서드 같은 프로그램 요소를 나타내는 인터페이스예요. 각 요소는 컴파일 시점의 언어 수준 구성 요소(가상 머신의 런타임 구성 요소가 아닌)를 나타내요. 이 인터페이스는 javax.lang.model 패키지의 javax.lang.model.element.Element로, 어노테이션 처리 중 다루는 각 언어 구조의 표현이에요.
요소는 equals(Object) 메서드로 비교해야 해요. 특정 요소가 항상 같은 객체로 표현된다는 보장은 없어요. Element 객체의 클래스에 기반한 연산을 구현하려면 방문자(visitor)를 쓰거나 getKind() 결과를 사용해요. instanceof는 이 모델링 계층에서 객체의 실제 클래스를 결정하는 신뢰할 만한 관용구가 아닐 수 있는데, 한 구현이 여러 Element 하위 인터페이스를 하나의 객체로 구현할 수 있기 때문이에요.
본문
슈퍼 인터페이스는 AnnotatedConstruct이고, 하위 인터페이스로 ExecutableElement, ModuleElement, PackageElement, TypeElement, VariableElement 등이 있어요. 선언은 다음과 같아요.
public interface Element extends AnnotatedConstruct
주요 메서드는 다음과 같아요.
| Modifier and Type | Method | 설명 |
|---|---|---|
<R, P> R |
accept(ElementVisitor<R,P> v, P p) |
이 요소에 방문자를 적용해요. |
TypeMirror |
asType() |
이 요소가 정의하는 타입을 반환해요. |
<A extends Annotation> A |
getAnnotation(Class<A> annotationType) |
지정된 타입의 어노테이션이 있으면 반환, 없으면 null. |
List<? extends Element> |
getEnclosedElements() |
이 요소에 직접 포함된 요소들을 반환해요. |
Element |
getEnclosingElement() |
이 요소를 포함하는 가장 안쪽 요소를 반환해요. |
ElementKind |
getKind() |
이 요소의 종류(kind)를 반환해요. |
Set<Modifier> |
getModifiers() |
어노테이션을 제외한 이 요소의 제어자들을 반환해요. |
Name |
getSimpleName() |
이 요소의 단순(비정규화) 이름을 반환해요. |
getKind()는PACKAGE,CLASS,INTERFACE,METHOD,FIELD같은 종류를 알려줘요. 이 값으로 분기 처리해요.getEnclosingElement()은 메서드가 속한 클래스처럼 포함 관계를 알려주고,getEnclosedElements()는 반대로 안에 든 멤버 목록을 돌려줘요.getSimpleName()은 메서드·클래스 이름,asType()은 요소가 갖는 타입,getModifiers()는public·static같은 제어자를 얻을 때 써요.
요소를 방문하려면 ElementVisitor 계열을, 타입을 얻으려면 TypeMirror를 함께 참고해요. Since: 1.6.