Trees
Trees (트리·요소·타입 API 연결)
JSR 199(컴파일러 API), JSR 269(애노테이션 처리), 그리고 com.sun.source의 Tree API를 서로 연결해 주는 추상 유틸리티 클래스입니다. 소스 트리와 언어 모델 요소(Element)·타입(TypeMirror)을 오가는 작업을 가능하게 해요.
본문
Trees는 instance(JavaCompiler.CompilationTask)나 instance(ProcessingEnvironment)로 인스턴스를 얻습니다. 전달한 작업/환경이 Tree API를 지원하지 않으면 IllegalArgumentException이 발생해요. 이 클래스를 확장한 것이 문서 주석 트리까지 다루는 DocTrees입니다.
트리와 요소·타입 변환
-
getTree(Element element)— 주어진 요소에 대응하는Tree노드를 반환합니다. 못 찾으면null이에요. 타입 요소(TypeElement)용으로ClassTree를, 실행 요소(ExecutableElement)용으로MethodTree를 돌려주는 오버로드도 있습니다. -
getTree(Element e, AnnotationMirror a, AnnotationValue v)— 주어진 요소 위의 애노테이션 미러에 해당하는Tree를 반환합니다. 값까지 지정하는 오버로드도 있어요. -
getElement(TreePath path)— 경로가 가리키는 트리 노드에 대응하는 언어 모델 요소(Element)를 반환합니다. -
getTypeMirror(TreePath path)— 경로가 가리키는 트리 노드의 타입 미러(TypeMirror)를 반환해요. -
getLub(CatchTree tree)—catch절에 선언된 예외 매개변수의 lub(가장 낮은 공통 상위 타입)를 반환합니다. -
getOriginalType(ErrorType errorType)—ErrorType객체에서 원래 타입을 얻어냅니다.
경로와 범위
-
getPath(CompilationUnitTree unit, Tree node)— 지정한 컴파일 단위 안에서 노드까지의TreePath를 반환합니다. -
getPath(Element e)— 주어진 요소의TreePath를 반환합니다. 애노테이션 미러나 값까지 지정하는 오버로드도 있어요. -
getScope(TreePath path)— 경로가 가리키는 트리 노드의 범위(Scope)를 반환합니다. -
isAccessible(Scope scope, TypeElement type)/isAccessible(Scope scope, Element member, DeclaredType type)— 주어진 타입이나 멤버가 특정 범위에서 접근 가능한지 검사해요.
그 외 메서드
-
getDocComment(TreePath path)— 트리 노드에 연결된 문서 주석을 반환합니다. -
getSourcePositions()— 소스 위치를 얻기 위한SourcePositions유틸리티를 반환해요. -
printMessage(Diagnostic.Kind kind, CharSequence msg, Tree t, CompilationUnitTree root)— 주어진 컴파일 단위에서 트리가 위치한 지점에 지정한 종류의 메시지를 출력합니다.