org.eclipse.wst.jsdt.core.dom

## Class IfStatement

- java.lang.Object
- - org.eclipse.wst.jsdt.core.dom.ASTNode
  - - org.eclipse.wst.jsdt.core.dom.ProgramElement
    - - org.eclipse.wst.jsdt.core.dom.Statement
      - - org.eclipse.wst.jsdt.core.dom.IfStatement

    public class IfStatement
    extends Statement

If statement AST node type.

     IfStatement:
        if ( Expression ) Statement [ else Statement]

Provisional API: This class/interface is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.

### Field Summary

Fields
`static ChildPropertyDescriptor` `ELSE_STATEMENT_PROPERTY` The "elseStatement" structural property of this node type.
`static ChildPropertyDescriptor` `EXPRESSION_PROPERTY` The "expression" structural property of this node type.
`static ChildPropertyDescriptor` `THEN_STATEMENT_PROPERTY` The "thenStatement" structural property of this node type.

### Fields inherited from class org.eclipse.wst.jsdt.core.dom.ASTNode

`ANONYMOUS_CLASS_DECLARATION, ARRAY_ACCESS, ARRAY_CREATION, ARRAY_INITIALIZER, ARRAY_NAME, ARRAY_TYPE, ARROW_FUNCTION_EXPRESSION, ASSIGNMENT, ASSIGNMENT_NAME, BLOCK, BLOCK_COMMENT, BOOLEAN_LITERAL, BREAK_STATEMENT, CATCH_CLAUSE, CHARACTER_LITERAL, CLASS_INSTANCE_CREATION, CONDITIONAL_EXPRESSION, CONSTRUCTOR_INVOCATION, CONTINUE_STATEMENT, DEBUGGER_STATEMENT, DO_STATEMENT, EMPTY_EXPRESSION, EMPTY_STATEMENT, ENHANCED_FOR_STATEMENT, EXPORT_DECLARATION, EXPRESSION_STATEMENT, FIELD_ACCESS, FIELD_DECLARATION, FOR_IN_STATEMENT, FOR_OF_STATEMENT, FOR_STATEMENT, FUNCTION_DECLARATION, FUNCTION_DECLARATION_STATEMENT, FUNCTION_EXPRESSION, FUNCTION_INVOCATION, FUNCTION_REF, FUNCTION_REF_PARAMETER, IF_STATEMENT, IMPORT_DECLARATION, INFERRED_TYPE, INFIX_EXPRESSION, INITIALIZER, INSTANCEOF_EXPRESSION, JAVASCRIPT_UNIT, JSDOC, LABELED_STATEMENT, LINE_COMMENT, LIST_EXPRESSION, MALFORMED, MEMBER_REF, META_PROPERTY, MODIFIER, MODULE_SPECIFIER, NULL_LITERAL, NUMBER_LITERAL, OBJECT_LITERAL, OBJECT_LITERAL_FIELD, OBJECT_NAME, ORIGINAL, PACKAGE_DECLARATION, PARENTHESIZED_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, QUALIFIED_NAME, QUALIFIED_TYPE, RECOVERED, REGULAR_EXPRESSION_LITERAL, REST_ELEMENT_NAME, RETURN_STATEMENT, SIMPLE_NAME, SIMPLE_TYPE, SINGLE_VARIABLE_DECLARATION, SPREAD_ELEMENT, STRING_LITERAL, SUPER_CONSTRUCTOR_INVOCATION, SUPER_FIELD_ACCESS, SUPER_METHOD_INVOCATION, SWITCH_CASE, SWITCH_STATEMENT, TAG_ELEMENT, TEMPLATE_ELEMENT, TEMPLATE_LITERAL, TEXT_ELEMENT, THIS_EXPRESSION, THROW_STATEMENT, TRY_STATEMENT, TYPE_DECLARATION, TYPE_DECLARATION_EXPRESSION, TYPE_DECLARATION_STATEMENT, TYPE_LITERAL, UNDEFINED_LITERAL, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WITH_STATEMENT, YIELD_EXPRESSION`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`Statement` `getElseStatement()` Returns the "else" part of this if statement, or `null` if this if statement has no "else" part.
`Expression` `getExpression()` Returns the expression of this if statement.
`Statement` `getThenStatement()` Returns the "then" part of this if statement.
`static java.util.List` `propertyDescriptors(int apiLevel)` Returns a list of structural property descriptors for this node type.
`void` `setElseStatement(Statement statement)` Sets or clears the "else" part of this if statement.
`void` `setExpression(Expression expression)` Sets the condition of this if statement.
`void` `setThenStatement(Statement statement)` Sets the "then" part of this if statement.

### Methods inherited from class org.eclipse.wst.jsdt.core.dom.Statement

`getLeadingComment, setLeadingComment`

### Methods inherited from class org.eclipse.wst.jsdt.core.dom.ASTNode

`accept, copySubtree, copySubtrees, delete, equals, getAST, getBodyChild, 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

The "expression" structural property of this node type.

#### THEN_STATEMENT_PROPERTY

    public static final ChildPropertyDescriptor THEN_STATEMENT_PROPERTY

The "thenStatement" structural property of this node type.

#### ELSE_STATEMENT_PROPERTY

    public static final ChildPropertyDescriptor ELSE_STATEMENT_PROPERTY

The "elseStatement" structural property of this node type.

### Method Detail

#### propertyDescriptors

    public static java.util.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`)

#### getExpression

    public Expression getExpression()

Returns the expression of this if statement.

Returns:
  the expression node

#### setExpression

    public void setExpression(Expression expression)

Sets the condition of this if statement.

Parameters:
  `expression` - the expression node
Throws:
  `java.lang.IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent
  - a cycle in would be created

#### getThenStatement

    public Statement getThenStatement()

Returns the "then" part of this if statement.

Returns:
  the "then" statement node

#### setThenStatement

    public void setThenStatement(Statement statement)

Sets the "then" part of this if statement.

Special note: The JavaScript language does not allow a local variable declaration to appear as the "then" part of an if statement (they may only appear within a block). However, the AST will allow a `VariableDeclarationStatement` as the thenStatement of a `IfStatement`. To get something that will compile, be sure to embed the `VariableDeclarationStatement` inside a `Block`.

Parameters:
  `statement` - the "then" statement node
Throws:
  `java.lang.IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent
  - a cycle in would be created

#### getElseStatement

    public Statement getElseStatement()

Returns the "else" part of this if statement, or `null` if this if statement has no "else" part.

Note that there is a subtle difference between having no else statement and having an empty statement ("{}") or null statement (";").

Returns:
  the "else" statement node, or `null` if none

#### setElseStatement

    public void setElseStatement(Statement statement)

Sets or clears the "else" part of this if statement.

Note that there is a subtle difference between having no else part (as in `"if(true){}"`) and having an empty block (as in "if(true){}else{}") or null statement (as in "if(true){}else;").

Special note: The JavaScript language does not allow a local variable declaration to appear as the "else" part of an if statement (they may only appear within a block). However, the AST will allow a `VariableDeclarationStatement` as the elseStatement of a `IfStatement`. To get something that will compile, be sure to embed the `VariableDeclarationStatement` inside a `Block`.

Parameters:
  `statement` - the "else" statement node, or `null` if there is none
Throws:
  `java.lang.IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent
  - a cycle in would be created