TreePathScanner (Java SE 22 & JDK 22)
Description: declaration: module: jdk.compiler, package: com.sun.source.util, class: TreePathScanner
Keywords: com.sun.source.util.TreePathScanner class

Module jdk.compiler
Package com.sun.source.util

# Class TreePathScanner<R,P>

java.lang.Object
com.sun.source.util.TreeScanner<R,P>
com.sun.source.util.TreePathScanner<R,P>

Type Parameters:
  `R` - the return type of this visitor's methods. Use `Void` for visitors that do not need to return results.
  `P` - the type of the additional parameter to this visitor's methods. Use `Void` for visitors that do not need an additional parameter.

All Implemented Interfaces:
  `TreeVisitor<R,P>`

public class TreePathScanner<R,P> extends TreeScanner<R,P>
A TreeVisitor that visits all the child tree nodes, and provides support for maintaining a path for the parent nodes. To visit nodes of a particular type, just override the corresponding visitorXYZ method. Inside your method, call super.visitXYZ to visit descendant nodes.

API Note:
  In order to initialize the "current path", the scan must be started by calling one of the `scan` methods.
Since:
  1.6

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `TreePathScanner()`
  Constructs a `TreePathScanner`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `TreePath`
  `getCurrentPath()`
  Returns the current path for the node, as built up by the currently active set of scan calls.
  `R`
  `scan(Tree tree, P p)`
  Scans a single node.
  `R`
  `scan(TreePath path, P p)`
  Scans a tree from a position identified by a TreePath.

  ### Methods declared in class com.sun.source.util.TreeScanner

  `reduce, scan, visitAnnotatedType, visitAnnotation, visitAnyPattern, visitArrayAccess, visitArrayType, visitAssert, visitAssignment, visitBinary, visitBindingPattern, visitBlock, visitBreak, visitCase, visitCatch, visitClass, visitCompilationUnit, visitCompoundAssignment, visitConditionalExpression, visitConstantCaseLabel, visitContinue, visitDeconstructionPattern, visitDefaultCaseLabel, visitDoWhileLoop, visitEmptyStatement, visitEnhancedForLoop, visitErroneous, visitExports, visitExpressionStatement, visitForLoop, visitIdentifier, visitIf, visitImport, visitInstanceOf, visitIntersectionType, visitLabeledStatement, visitLambdaExpression, visitLiteral, visitMemberReference, visitMemberSelect, visitMethod, visitMethodInvocation, visitModifiers, visitModule, visitNewArray, visitNewClass, visitOpens, visitOther, visitPackage, visitParameterizedType, visitParenthesized, visitPatternCaseLabel, visitPrimitiveType, visitProvides, visitRequires, visitReturn, visitStringTemplate, visitSwitch, visitSwitchExpression, visitSynchronized, visitThrow, visitTry, visitTypeCast, visitTypeParameter, visitUnary, visitUnionType, visitUses, visitVariable, visitWhileLoop, visitWildcard, visitYield`

  ### Methods declared in class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### TreePathScanner

    public TreePathScanner()
    Constructs a `TreePathScanner`.

- ## Method Details

  - ### scan

    public R scan(TreePath path, P p)
    Scans a tree from a position identified by a TreePath.
    Parameters:
      `path` - the path identifying the node to be scanned
      `p` - a parameter value passed to visit methods
    Returns:
      the result value from the visit method

  - ### scan

    public R scan(Tree tree, P p)
    Scans a single node. The current path is updated for the duration of the scan.
    Overrides:
      `scan` in class `TreeScanner<R,P>`
    API Note:
      This method should normally only be called by the scanner's `visit` methods, as part of an ongoing scan initiated by `scan(TreePath, P)`. The one exception is that it may also be called to initiate a full scan of a `CompilationUnitTree`.
    Parameters:
      `tree` - the node to be scanned
      `p` - a parameter value passed to the visit method
    Returns:
      the result value from the visit method

  - ### getCurrentPath

    public TreePath getCurrentPath()
    Returns the current path for the node, as built up by the currently active set of scan calls.
    Returns:
      the current path