Tree (Java SE 21 & JDK 21)
Description: declaration: module: jdk.compiler, package: com.sun.source.tree, interface: Tree
Keywords: com.sun.source.tree.Tree interface

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

# Interface Tree

All Known Subinterfaces:
  `AnnotatedTypeTree`, `AnnotationTree`, `AnyPatternTreePREVIEW`, `ArrayAccessTree`, `ArrayTypeTree`, `AssertTree`, `AssignmentTree`, `BinaryTree`, `BindingPatternTree`, `BlockTree`, `BreakTree`, `CaseLabelTree`, `CaseTree`, `CatchTree`, `ClassTree`, `CompilationUnitTree`, `CompoundAssignmentTree`, `ConditionalExpressionTree`, `ConstantCaseLabelTree`, `ContinueTree`, `DeconstructionPatternTree`, `DefaultCaseLabelTree`, `DirectiveTree`, `DoWhileLoopTree`, `EmptyStatementTree`, `EnhancedForLoopTree`, `ErroneousTree`, `ExportsTree`, `ExpressionStatementTree`, `ExpressionTree`, `ForLoopTree`, `IdentifierTree`, `IfTree`, `ImportTree`, `InstanceOfTree`, `IntersectionTypeTree`, `LabeledStatementTree`, `LambdaExpressionTree`, `LiteralTree`, `MemberReferenceTree`, `MemberSelectTree`, `MethodInvocationTree`, `MethodTree`, `ModifiersTree`, `ModuleTree`, `NewArrayTree`, `NewClassTree`, `OpensTree`, `PackageTree`, `ParameterizedTypeTree`, `ParenthesizedTree`, `PatternCaseLabelTree`, `PatternTree`, `PrimitiveTypeTree`, `ProvidesTree`, `RequiresTree`, `ReturnTree`, `StatementTree`, `StringTemplateTreePREVIEW`, `SwitchExpressionTree`, `SwitchTree`, `SynchronizedTree`, `ThrowTree`, `TryTree`, `TypeCastTree`, `TypeParameterTree`, `UnaryTree`, `UnionTypeTree`, `UsesTree`, `VariableTree`, `WhileLoopTree`, `WildcardTree`, `YieldTree`

public interface Tree
Common interface for all nodes in an abstract syntax tree.

WARNING: This interface and its sub-interfaces are subject to change as the Java programming language evolves. These interfaces are implemented by the JDK Java compiler (javac) and should not be implemented either directly or indirectly by other applications.

Since:
  1.6

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static enum`
  `Tree.Kind`
  Enumerates all kinds of trees.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `<R, D> R`
  `accept(TreeVisitor<R,D> visitor, D data)`
  Accept method used to implement the visitor pattern.
  `Tree.Kind`
  `getKind()`
  Returns the kind of this tree.

- ## Method Details

  - ### getKind

    Tree.Kind getKind()
    Returns the kind of this tree.
    Returns:
      the kind of this tree

  - ### accept

    <R, D> R accept(TreeVisitor<R,D> visitor, D data)
    Accept method used to implement the visitor pattern. The visitor pattern is used to implement operations on trees.
    Type Parameters:
      `R` - the result type of this operation
      `D` - the type of additional data
    Parameters:
      `visitor` - the visitor to be called
      `data` - a value to be passed to the visitor
    Returns:
      the result returned from calling the visitor