SimpleTreeVisitor
SimpleTreeVisitor (간단한 소스 트리 방문자)
소스 코드 추상 구문 트리(com.sun.source.tree)를 위한 간단한 방문자입니다. TreeVisitor 인터페이스의 모든 visitXXX 메서드에 기본 동작을 제공해서, 특정 노드 종류만 골라 처리할 수 있게 해 줍니다.
본문
TreeVisitor<R,P>를 구현한 편의 클래스로, 모든 방문 메서드의 기본 구현이 defaultAction을 호출하고 defaultAction은 DEFAULT_VALUE를 반환합니다. 즉 대부분의 노드를 무시하면서 원하는 몇 가지 노드에만 반응하는 방문자를 쉽게 만들 수 있어요.
생성자
SimpleTreeVisitor()—DEFAULT_VALUE가null인 방문자를 만듭니다.SimpleTreeVisitor(R defaultValue)— 지정한 기본 값을 사용하는 방문자를 만듭니다.
핵심 메서드
-
visit(Tree node, P p)— 노드의 타입에 맞는 방문 메서드를 호출해 실행하는 디스패치 입구입니다. 마지막으로 호출된 방문 메서드의 결과를 반환하고, 호출된 것이 없으면null이에요. -
visit(Iterable<? extends Tree> nodes, P p)— 노드들의 연속 각각에 대해 알맞은 방문 메서드를 호출합니다. -
defaultAction(Tree node, P p)— 오버라이드하지 않은 모든visitXXX가 사용하는 기본 동작으로,DEFAULT_VALUE를 반환합니다. -
DEFAULT_VALUE필드 — 기본 동작이 반환하는 값입니다. -
각
visitXXX메서드 — 소스 코드의 거의 모든 구조에 대응합니다.visitCompilationUnit,visitClass,visitMethod,visitVariable,visitIf,visitForLoop,visitWhileLoop,visitSwitch,visitReturn,visitThrow,visitTry,visitMethodInvocation,visitNewClass,visitLambdaExpression,visitAssignment,visitBinary,visitConditionalExpression,visitIdentifier,visitLiteral,visitTypeCast,visitMemberSelect,visitWildcard,visitAnnotation,visitModule,visitYield등 언어 요소 전반을 커버하며, 기본적으로defaultAction을 호출합니다.
일부 메서드는 프리뷰 API에 속하는데, 예를 들어 visitStringTemplate, visitAnyPattern, visitDeconstructionPattern, visitPatternCaseLabel 등은 프리뷰 기능이 활성화된 경우에만 사용할 수 있어요.
이 점만 빼면 기본적으로 거의 모든 소스 구조를 커버하는 방문자라서, 직접 방문자를 처음부터 만들 필요 없이 필요한 메서드만 골라 쓰기 좋아요. visitOther는 언어가 진화하면서 Tree 계층에 새 노드 종류가 추가될 때 발생하는 알 수 없는 노드를 처리해 줍니다.