DocTreeVisitor
DocTreeVisitor (문서 트리 비지터)
비지터 디자인 패턴 방식으로 문서 트리 노드를 순회하는 비지터 인터페이스입니다. 트리 위에서 특정 작업을 수행할 때 사용해요.
본문
public interface DocTreeVisitor<R, P>
이 인터페이스를 구현하는 클래스는, 컴파일 시점에 트리의 종류가 알려지지 않았을 때 트리 위에서 작업을 수행하기 위해 사용됩니다. 비지터가 트리의 accept 메서드에 전달되면, 해당 트리에 가장 적합한 visitXyz 메서드가 호출돼요.
구현 클래스는 추가 파라미터 p가 null일 때 NullPointerException을 던질 수도 있고 아닐 수도 있습니다. 이는 구현 클래스의 문서를 따르면 돼요.
타입 파라미터는 두 개입니다.
R— 비지터 메서드의 반환 타입. 결과가 필요 없는 비지터는Void를 씁니다.P— 비지터 메서드에 추가로 넘길 파라미터의 타입. 추가 파라미터가 필요 없으면Void를 씁니다.
알려진 구현 클래스로는 DocTreePathScanner, DocTreeScanner, SimpleDocTreeVisitor가 있어요. Java 1.8부터 존재합니다.
방문 메서드들
이 인터페이스는 문서 트리의 각 노드 종류마다 하나씩 방문 메서드를 제공합니다. 대표적으로 살펴보면 다음과 같아요.
R visitAttribute(AttributeTree node, P p) // <a href> 같은 HTML 속성
R visitAuthor(AuthorTree node, P p) // @author 태그
R visitComment(CommentTree node, P p) // HTML 주석
R visitDeprecated(DeprecatedTree node, P p) // @deprecated 태그
R visitDocComment(DocCommentTree node, P p) // 문서 주석 최상위 노드
R visitLink(LinkTree node, P p) // @link 태그
R visitLiteral(LiteralTree node, P p) // @literal/@code 태그
R visitText(TextTree node, P p) // 일반 텍스트
R visitThrows(ThrowsTree node, P p) // @throws 태그
R visitUnknownBlockTag(UnknownBlockTagTree node, P p) // 미지의 블록 태그
R visitValue(ValueTree node, P p) // @value 태그
각 메서드는 방문할 노드(node)와 추가 파라미터(p)를 받아 결과 값(R)을 반환합니다. 아직 알려지지 않은 DocTree 종류를 만나면 visitOther가 호출됩니다.
일부 메서드(visitDocType, visitEscape, visitHidden, visitIndex, visitProvides, visitSnippet, visitSpec, visitSummary, visitSystemProperty, visitUses)는 default 메서드로 정의되어 있어요.
⚠️ 참고: 이 인터페이스에 나중에 추가될 문서 주석 구조를 수용하기 위해 메서드가 추가될 수 있습니다. 따라서 이 인터페이스를 직접 구현하는 비지터 클래스는 향후 플랫폼 버전과 소스 호환되지 않을 수 있어요.