Package org.eclipse.jdt.core.dom

## Class SwitchCase

- java.lang.Object
- - org.eclipse.jdt.core.dom.ASTNode
  - - org.eclipse.jdt.core.dom.Statement
    - - org.eclipse.jdt.core.dom.SwitchCase

    public class SwitchCase
    extends Statement

Switch case AST node type. A switch case is a special kind of node used only in switch statements. It is a `Statement` in name only.

     SwitchCase:
                    case Expression  :
                    default :

     Switch case allows multiple expressions and '->' as part of Java 12 preview feature (JEP 325)
                    case [ Expression { , Expression } ]  { : | ->}
                    default { : | ->}

Since:
  2.0
Restriction:
  This class is not intended to be instantiated by clients.

### Field Summary

Fields
`static ChildPropertyDescriptor` `EXPRESSION_PROPERTY` Deprecated. In the JLS 12 15.28.1 API, this property is replaced by `EXPRESSIONS2_PROPERTY`.
`static ChildListPropertyDescriptor` `EXPRESSIONS2_PROPERTY` The "expression" structural property of this node type (child type: `Expression`).
`static SimplePropertyDescriptor` `SWITCH_LABELED_RULE_PROPERTY` The "switchLabeledRule" structural property of this node type (type: `Boolean`).

### Fields inherited from class org.eclipse.jdt.core.dom.ASTNode

`ANNOTATION_TYPE_DECLARATION, ANNOTATION_TYPE_MEMBER_DECLARATION, ANONYMOUS_CLASS_DECLARATION, ARRAY_ACCESS, ARRAY_CREATION, ARRAY_INITIALIZER, ARRAY_TYPE, ASSERT_STATEMENT, ASSIGNMENT, BLOCK, BLOCK_COMMENT, BOOLEAN_LITERAL, BREAK_STATEMENT, CAST_EXPRESSION, CATCH_CLAUSE, CHARACTER_LITERAL, CLASS_INSTANCE_CREATION, COMPILATION_UNIT, CONDITIONAL_EXPRESSION, CONSTRUCTOR_INVOCATION, CONTINUE_STATEMENT, CREATION_REFERENCE, DIMENSION, DO_STATEMENT, EMPTY_STATEMENT, ENHANCED_FOR_STATEMENT, ENUM_CONSTANT_DECLARATION, ENUM_DECLARATION, EXPORTS_DIRECTIVE, EXPRESSION_METHOD_REFERENCE, EXPRESSION_STATEMENT, FIELD_ACCESS, FIELD_DECLARATION, FOR_STATEMENT, IF_STATEMENT, IMPORT_DECLARATION, INFIX_EXPRESSION, INITIALIZER, INSTANCEOF_EXPRESSION, INTERSECTION_TYPE, JAVADOC, LABELED_STATEMENT, LAMBDA_EXPRESSION, LINE_COMMENT, MALFORMED, MARKER_ANNOTATION, MEMBER_REF, MEMBER_VALUE_PAIR, METHOD_DECLARATION, METHOD_INVOCATION, METHOD_REF, METHOD_REF_PARAMETER, MODIFIER, MODULE_DECLARATION, MODULE_MODIFIER, NAME_QUALIFIED_TYPE, NORMAL_ANNOTATION, NULL_LITERAL, NUMBER_LITERAL, OPENS_DIRECTIVE, ORIGINAL, PACKAGE_DECLARATION, PARAMETERIZED_TYPE, PARENTHESIZED_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, PROVIDES_DIRECTIVE, QUALIFIED_NAME, QUALIFIED_TYPE, RECORD_DECLARATION, RECOVERED, REQUIRES_DIRECTIVE, RETURN_STATEMENT, SIMPLE_NAME, SIMPLE_TYPE, SINGLE_MEMBER_ANNOTATION, SINGLE_VARIABLE_DECLARATION, STRING_LITERAL, SUPER_CONSTRUCTOR_INVOCATION, SUPER_FIELD_ACCESS, SUPER_METHOD_INVOCATION, SUPER_METHOD_REFERENCE, SWITCH_CASE, SWITCH_EXPRESSION, SWITCH_STATEMENT, SYNCHRONIZED_STATEMENT, TAG_ELEMENT, TEXT_BLOCK, TEXT_ELEMENT, THIS_EXPRESSION, THROW_STATEMENT, TRY_STATEMENT, TYPE_DECLARATION, TYPE_DECLARATION_STATEMENT, TYPE_LITERAL, TYPE_METHOD_REFERENCE, TYPE_PARAMETER, UNION_TYPE, USES_DIRECTIVE, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WILDCARD_TYPE, YIELD_STATEMENT`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
`List` `expressions()` Returns the list of expressions of this switch case, or `empty` if there is none (the "default:" case).
`Expression` `getExpression()` Deprecated. use expressions() (see JLS 12)
`boolean` `isDefault()` Returns whether this switch case represents the "default:" case.
`boolean` `isSwitchLabeledRule()` Gets the switchLabeledRule of this switch case as `true` or `false`.
`static List` `propertyDescriptors​(int apiLevel)` Returns a list of structural property descriptors for this node type.
`void` `setExpression​(Expression expression)` Deprecated. see JLS 12
`void` `setSwitchLabeledRule​(boolean switchLabeledRule)` Sets the switchLabeledRule of this switch case as `true` or `false`.

### Methods inherited from class org.eclipse.jdt.core.dom.Statement

`getLeadingComment, setLeadingComment`

### Methods inherited from class org.eclipse.jdt.core.dom.ASTNode

`accept, copySubtree, copySubtrees, delete, equals, getAST, getFlags, getLength, getLocationInParent, getNodeType, getParent, getProperty, getRoot, getStartPosition, getStructuralProperty, hashCode, nodeClassForType, properties, setFlags, setProperty, setSourceRange, setStructuralProperty, structuralPropertiesForType, subtreeBytes, subtreeMatch, toString`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Field Detail

#### EXPRESSION_PROPERTY

    public static final ChildPropertyDescriptor EXPRESSION_PROPERTY

Deprecated.
In the JLS 12 15.28.1 API, this property is replaced by `EXPRESSIONS2_PROPERTY`.
The "expression" structural property of this node type (child type: `Expression`).

Since:
  3.0

#### EXPRESSIONS2_PROPERTY

    public static final ChildListPropertyDescriptor EXPRESSIONS2_PROPERTY

The "expression" structural property of this node type (child type: `Expression`). (added in JEP 325).

Since:
  3.18
Restriction:
  This property is not intended to be referenced by clients as it is a part of Java preview feature.

#### SWITCH_LABELED_RULE_PROPERTY

    public static final SimplePropertyDescriptor SWITCH_LABELED_RULE_PROPERTY

The "switchLabeledRule" structural property of this node type (type: `Boolean`).

Since:
  3.18
Restriction:
  This property is not intended to be referenced by clients as it is a part of Java preview feature.

### Method Detail

#### propertyDescriptors

    public static List propertyDescriptors​(int apiLevel)

Returns a list of structural property descriptors for this node type. Clients must not modify the result.

Parameters:
  `apiLevel` - the API level; one of the `AST.JLS*` constants
Returns:
  a list of property descriptors (element type: `StructuralPropertyDescriptor`)
Since:
  3.0

#### getExpression

    public Expression getExpression()

Deprecated.
use expressions() (see JLS 12)
Returns the expression of this switch case, or `null` if there is none (the "default:" case).

Returns:
  the expression node, or `null` if there is none

#### expressions

    public List expressions()

Returns the list of expressions of this switch case, or `empty` if there is none (the "default:" case). With previewEnabled flag as false it will have only one element.

Returns:
  the list of expression nodes (element type: `Expression`)
Throws:
  `UnsupportedOperationException` - if this operation is used below JLS14
Since:
  3.22

#### setExpression

    public void setExpression​(Expression expression)

Deprecated.
see JLS 12
Sets the expression of this switch case, or clears it (turns it into the "default:" case).

Parameters:
  `expression` - the expression node, or `null` to turn it into the "default:" case
Throws:
  `IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent
  - a cycle in would be created

#### setSwitchLabeledRule

    public void setSwitchLabeledRule​(boolean switchLabeledRule)

Sets the switchLabeledRule of this switch case as `true` or `false`. `true` indicates "->" and `false` indicates ":".

Parameters:
  `switchLabeledRule` - `true` or `false`
Throws:
  `UnsupportedOperationException` - if this operation is used below JLS14
Since:
  3.22

#### isSwitchLabeledRule

    public boolean isSwitchLabeledRule()

Gets the switchLabeledRule of this switch case as `true` or `false`. `true` indicates "->" and `false` indicates ":".

Returns:
  switchLabeledRule `true` or `false`
Throws:
  `UnsupportedOperationException` - if this operation is used below JLS14
Since:
  3.22

#### isDefault

    public boolean isDefault()

Returns whether this switch case represents the "default:" case.

This convenience method is equivalent to `getExpression() == null` or `expressions().isEmpty()`.

Returns:
  `true` if this is the default switch case, and `false` if this is a non-default switch case