org.eclipse.wst.jsdt.core.dom

## Class Expression

- java.lang.Object
- - org.eclipse.wst.jsdt.core.dom.ASTNode
  - - org.eclipse.wst.jsdt.core.dom.Expression

Direct Known Subclasses:
  ArrayAccess, ArrayCreation, ArrayInitializer, ArrowFunctionExpression, Assignment, BooleanLiteral, CharacterLiteral, ClassInstanceCreation, ConditionalExpression, EmptyExpression, FieldAccess, FunctionExpression, FunctionInvocation, InfixExpression, InstanceofExpression, ListExpression, MetaProperty, Name, NullLiteral, NumberLiteral, ObjectLiteral, ObjectLiteralField, ParenthesizedExpression, PostfixExpression, PrefixExpression, RegularExpressionLiteral, SpreadElement, StringLiteral, SuperFieldAccess, SuperMethodInvocation, TemplateLiteral, ThisExpression, TypeDeclarationExpression, TypeLiteral, UndefinedLiteral, VariableDeclarationExpression, YieldExpression

    public abstract class Expression
    extends ASTNode

Abstract base class of AST nodes that represent expressions. There are several kinds of expressions.

     Expression:
        Name
        IntegerLiteral (includes decimal, hex, and octal forms; and long)
        FloatingPointLiteral (includes both float and double)
        CharacterLiteral
        NullLiteral
        BooleanLiteral
        StringLiteral
        TypeLiteral
        ThisExpression
        SuperFieldAccess
        FieldAccess
        Assignment
        ParenthesizedExpression
        ClassInstanceCreation
        ArrayCreation
        ArrayInitializer
        FunctionInvocation
        SuperMethodInvocation
        ArrayAccess
        InfixExpression
        InstanceofExpression
        ConditionalExpression
        PostfixExpression
        PrefixExpression
        CastExpression
        VariableDeclarationExpression

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 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 Instance Methods Concrete Methods
`boolean` `resolveBoxing()` Returns whether this expression node is the site of a boxing conversion (JLS3 5.1.7).
`java.lang.Object` `resolveConstantExpressionValue()` Resolves and returns the compile-time constant expression value as specified in JLS2 15.28, if this expression has one.
`ITypeBinding` `resolveTypeBinding()` Resolves and returns the binding for the type of this expression.
`boolean` `resolveUnboxing()` Returns whether this expression node is the site of an unboxing conversion (JLS3 5.1.8).

### 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`

### Method Detail

#### resolveConstantExpressionValue

    public final java.lang.Object resolveConstantExpressionValue()

Resolves and returns the compile-time constant expression value as specified in JLS2 15.28, if this expression has one. Constant expression values are unavailable unless bindings are requested when the AST is being built. If the type of the value is a primitive type, the result is the boxed equivalent (i.e., int returned as an `Integer`); if the type of the value is `String`, the result is the string itself. If the expression does not have a compile-time constant expression value, the result is `null`.

Resolving constant expressions takes into account the value of simple and qualified names that refer to constant variables (JLS2 4.12.4).

Note 1: enum constants are not considered constant expressions. The result is always `null` for these.

Note 2: Compile-time constant expressions cannot denote `null`. So technically `NullLiteral` nodes are not constant expressions. The result is `null` for these nonetheless.

Returns:
  the constant expression value, or `null` if this expression has no constant expression value or if bindings were not requested when the AST was created

#### resolveTypeBinding

    public final ITypeBinding resolveTypeBinding()

Resolves and returns the binding for the type of this expression.

Note that bindings are generally unavailable unless requested when the AST is being built.

Returns:
  the binding for the type of this expression, or `null` if the type cannot be resolved

#### resolveBoxing

    public final boolean resolveBoxing()

Returns whether this expression node is the site of a boxing conversion (JLS3 5.1.7). This information is available only when bindings are requested when the AST is being built.

Returns:
  `true` if this expression is the site of a boxing conversion, or `false` if either no boxing conversion is involved or if bindings were not requested when the AST was created

#### resolveUnboxing

    public final boolean resolveUnboxing()

Returns whether this expression node is the site of an unboxing conversion (JLS3 5.1.8). This information is available only when bindings are requested when the AST is being built.

Returns:
  `true` if this expression is the site of an unboxing conversion, or `false` if either no unboxing conversion is involved or if bindings were not requested when the AST was created