Module jdk.compiler

Class DocTreeScanner<R,P>

java.lang.Object
com.sun.source.util.DocTreeScanner<R,P>
类型参数:
R - 此访问者方法的返回类型。对于不需要返回结果的访问者,请使用Void
P - 此访问者方法的附加参数的类型。对于不需要附加参数的访问者,请使用Void
所有实现的接口:
DocTreeVisitor<R,P>
直接已知的子类:
DocTreePathScanner

public class DocTreeScanner<R,P> extends Object implements DocTreeVisitor<R,P>
访问所有子树节点的DocTreeVisitor。要访问特定类型的节点,只需重写相应的visitXYZ方法。在您的方法内部,调用super.visitXYZ以访问后代节点。

这里是一个示例,用于计算树中错误节点的数量:

   class CountErrors extends DocTreeScanner<Integer,Void> {
      @Override
      public Integer visitErroneous(ErroneousTree node, Void p) {
          return 1;
      }
      @Override
      public Integer reduce(Integer r1, Integer r2) {
          return (r1 == null ? 0 : r1) + (r2 == null ? 0 : r2);
      }
   }
 
实现要求:

visitXYZ方法的默认实现将按以下方式确定结果:

  • 如果被访问的节点没有子节点,则结果将为null
  • 如果被访问的节点有一个子节点,则结果将是使用该子节点调用scan的结果。子节点可以是简单节点,也可以是节点列表。
  • 如果被访问的节点有多个子节点,则结果将通过依次调用每个子节点的scan来确定,然后将第一个扫描之后的每个扫描结果与到目前为止的累积结果组合,由reduce(R, R)方法确定。每个子节点可以是简单节点,也可以是节点列表。reduce方法的默认行为是,visitXYZ方法的结果将是最后一个扫描的子节点的结果。
自 JDK 版本:
1.8
  • Constructor Details

    • DocTreeScanner

      public DocTreeScanner()
      构造一个DocTreeScanner
  • Method Details

    • scan

      public R scan(DocTree node, P p)
      扫描单个节点。
      参数:
      node - 要扫描的节点
      p - 传递给访问方法的参数值
      返回:
      访问方法的结果值
    • scan

      public R scan(Iterable<? extends DocTree> nodes, P p)
      扫描一系列节点。
      参数:
      nodes - 要扫描的节点
      p - 要传递给每个节点的访问方法的参数值
      返回:
      访问方法的组合返回值。这些值使用reduce方法组合。
    • reduce

      public R reduce(R r1, R r2)
      将两个结果合并为一个组合结果。默认实现是返回第一个参数。该方法的一般约定是可以采取任何操作。
      参数:
      r1 - 要组合的值中的第一个值
      r2 - 要组合的值中的第二个值
      返回:
      组合两个参数的结果
    • visitAttribute

      public R visitAttribute(AttributeTree node, P p)
      访问一个AttributeTree节点。
      指定者:
      visitAttribute 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitAuthor

      public R visitAuthor(AuthorTree node, P p)
      访问一个AuthorTree节点。
      指定者:
      visitAuthor 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitComment

      public R visitComment(CommentTree node, P p)
      访问一个CommentTree节点。
      指定者:
      visitComment 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现返回null
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitDeprecated

      public R visitDeprecated(DeprecatedTree node, P p)
      访问一个DeprecatedTree节点。
      指定者:
      visitDeprecated 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitDocComment

      public R visitDocComment(DocCommentTree node, P p)
      访问一个DocCommentTree节点。
      指定者:
      visitDocComment 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitDocRoot

      public R visitDocRoot(DocRootTree node, P p)
      访问一个DocRootTree节点。
      指定者:
      visitDocRoot 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现返回null
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitDocType

      public R visitDocType(DocTypeTree node, P p)
      访问DocTypeTree节点。
      指定者:
      visitDocType 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现返回null
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitEndElement

      public R visitEndElement(EndElementTree node, P p)
      访问EndElementTree节点。
      指定者:
      visitEndElement 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现返回null
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitEntity

      public R visitEntity(EntityTree node, P p)
      访问EntityTree节点。
      指定者:
      visitEntity 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现返回null
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitErroneous

      public R visitErroneous(ErroneousTree node, P p)
      访问ErroneousTree节点。
      指定者:
      visitErroneous 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现返回null
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitEscape

      public R visitEscape(EscapeTree node, P p)
      访问EscapeTree节点。
      指定者:
      visitEscape 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现返回null
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
      自:
      21
    • visitHidden

      public R visitHidden(HiddenTree node, P p)
      访问HiddenTree节点。
      指定者:
      visitHidden 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitIdentifier

      public R visitIdentifier(IdentifierTree node, P p)
      访问IdentifierTree节点。
      指定者:
      visitIdentifier 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现返回null
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitIndex

      public R visitIndex(IndexTree node, P p)
      访问IndexTree节点。
      指定者:
      visitIndex 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitInheritDoc

      public R visitInheritDoc(InheritDocTree node, P p)
      访问InheritDocTree节点。
      指定者:
      visitInheritDoc 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现返回null
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitLink

      public R visitLink(LinkTree node, P p)
      访问LinkTree节点。
      指定者:
      visitLink 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitLiteral

      public R visitLiteral(LiteralTree node, P p)
      访问LiteralTree节点。
      指定者:
      visitLiteral 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitParam

      public R visitParam(ParamTree node, P p)
      访问ParamTree节点。
      指定者:
      visitParam 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitProvides

      public R visitProvides(ProvidesTree node, P p)
      访问ProvidesTree节点。
      指定者:
      visitProvides 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitReference

      public R visitReference(ReferenceTree node, P p)
      访问一个ReferenceTree节点。
      指定者:
      visitReference 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现返回null
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitReturn

      public R visitReturn(ReturnTree node, P p)
      访问一个ReturnTree节点。
      指定者:
      visitReturn 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitSee

      public R visitSee(SeeTree node, P p)
      访问一个SeeTree节点。
      指定者:
      visitSee 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitSerial

      public R visitSerial(SerialTree node, P p)
      访问一个SerialTree节点。
      指定者:
      visitSerial 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitSerialData

      public R visitSerialData(SerialDataTree node, P p)
      访问一个SerialDataTree节点。
      指定者:
      visitSerialData 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitSerialField

      public R visitSerialField(SerialFieldTree node, P p)
      访问一个SerialFieldTree节点。
      指定者:
      visitSerialField 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitSince

      public R visitSince(SinceTree node, P p)
      访问一个SinceTree节点。
      指定者:
      visitSince 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitSnippet

      public R visitSnippet(SnippetTree node, P p)
      访问一个SnippetTree节点。
      指定者:
      visitSnippet 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
      自:
      18
    • visitSpec

      public R visitSpec(SpecTree node, P p)
      访问一个SpecTree节点。
      指定者:
      visitSpec 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
      自:
      20
    • visitStartElement

      public R visitStartElement(StartElementTree node, P p)
      访问一个StartElementTree节点。
      指定者:
      visitStartElement 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitSummary

      public R visitSummary(SummaryTree node, P p)
      访问一个SummaryTree节点。
      指定者:
      visitSummary 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
      自:
      10
    • visitSystemProperty

      public R visitSystemProperty(SystemPropertyTree node, P p)
      访问一个SystemPropertyTree节点。
      指定者:
      visitSystemProperty 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现返回null
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
      自:
      12
    • visitText

      public R visitText(TextTree node, P p)
      访问一个TextTree节点。
      指定者:
      visitText 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现返回null
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitThrows

      public R visitThrows(ThrowsTree node, P p)
      访问ThrowsTree节点。
      指定者:
      visitThrows 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitUnknownBlockTag

      public R visitUnknownBlockTag(UnknownBlockTagTree node, P p)
      访问UnknownBlockTagTree节点。
      指定者:
      visitUnknownBlockTag 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitUnknownInlineTag

      public R visitUnknownInlineTag(UnknownInlineTagTree node, P p)
      访问UnknownInlineTagTree节点。
      指定者:
      visitUnknownInlineTag 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitUses

      public R visitUses(UsesTree node, P p)
      访问UsesTree节点。
      指定者:
      visitUses 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitValue

      public R visitValue(ValueTree node, P p)
      访问ValueTree节点。
      指定者:
      visitValue 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitVersion

      public R visitVersion(VersionTree node, P p)
      访问VersionTree节点。
      指定者:
      visitVersion 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现按从左到右的顺序扫描子节点。
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果
    • visitOther

      public R visitOther(DocTree node, P p)
      访问未知类型的DocTree节点。如果标签集发生演变并且向DocTree层次结构添加了新类型的节点,则可能会发生这种情况。
      指定者:
      visitOther 在接口 DocTreeVisitor<R,P>
      实现要求:
      此实现返回null
      参数:
      node - 正在访问的节点
      p - 参数值
      返回:
      扫描结果