# Interface CaseTree

All Superinterfaces:
  `Tree`

public interface CaseTree extends Tree
A tree node for a `case` in a `switch` statement or expression. For example:

      case expression :
          statements

      default :
          statements

See Java Language Specification:
  14.11 The switch Statement
Since:
  1.6

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static enum`
  `CaseTree.CaseKind`
  The syntactic form of this case: STATEMENT: `case <expression>: <statements>` RULE: `case <expression> -> <expression>/<statement>`

  ### Nested classes/interfaces declared in interface Tree

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `default Tree`
  `getBody()`
  For case with kind CaseTree.CaseKind.RULE, returns the statement or expression after the arrow.
  `default CaseTree.CaseKind`
  `getCaseKind()`
  Returns the kind of this case.
  `ExpressionTree`
  `getExpression()`
  Deprecated.
  Please use `getExpressions()`.
  `List<? extends ExpressionTree>`
  `getExpressions()`
  Returns the labels for this case.
  `ExpressionTree`
  `getGuard()`
  The guard for the case.
  `List<? extends CaseLabelTree>`
  `getLabels()`
  Returns the labels for this case.
  `List<? extends StatementTree>`
  `getStatements()`
  For case with kind CaseTree.CaseKind.STATEMENT, returns the statements labeled by the case.

  ### Methods declared in interface Tree

  `accept, getKind`
  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

  - ### getExpression

    @Deprecated ExpressionTree getExpression()
    Deprecated.
    Please use `getExpressions()`.
    Returns the expression for the case, or `null` if this is the default case. If this case has multiple labels, returns the first label.
    Returns:
      the expression for the case, or null

  - ### getExpressions

    List<? extends ExpressionTree> getExpressions()
    Returns the labels for this case. For default case, returns an empty list.
    Returns:
      labels for this case
    Since:
      14

  - ### getLabels

    List<? extends CaseLabelTree> getLabels()
    Returns the labels for this case. For `default` case return a list with a single element, `DefaultCaseLabelTree`.
    Returns:
      labels for this case
    Since:
      21

  - ### getGuard

    ExpressionTree getGuard()
    The guard for the case.
    Returns:
      the guard
    Since:
      21

  - ### getStatements

    List<? extends StatementTree> getStatements()
    For case with kind CaseTree.CaseKind.STATEMENT, returns the statements labeled by the case. Returns `null` for case with kind CaseTree.CaseKind.RULE.
    Returns:
      the statements labeled by the case or null

  - ### getBody

    default Tree getBody()
    For case with kind CaseTree.CaseKind.RULE, returns the statement or expression after the arrow. Returns `null` for case with kind CaseTree.CaseKind.STATEMENT.
    Returns:
      case value or null
    Since:
      14

  - ### getCaseKind

    default CaseTree.CaseKind getCaseKind()
    Returns the kind of this case.
    Returns:
      the kind of this case
    Since:
      14