org.eclipse.wst.jsdt.core.dom

## Class ClassInstanceCreation

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

    public class ClassInstanceCreation
    extends Expression

Class instance creation expression AST node type. For JLS2:

     ClassInstanceCreation:
            [ Expression . ] new Name
                ( [ Expression { , Expression } ] )
                [ AnonymousClassDeclaration ]

For JLS3, type arguments are added and the type name is generalized to a type so that parameterized types can be instantiated:

     ClassInstanceCreation:
            [ Expression . ]
                new [ < Type { , Type } > ]
                Type ( [ Expression { , Expression } ] )
                [ AnonymousClassDeclaration ]

Not all node arragements will represent legal JavaScript constructs. In particular, it is nonsense if the type is a primitive type or an array type (primitive types cannot be instantiated, and array creations must be represented with `ArrayCreation` nodes). The normal use is when the type is a simple, qualified, or parameterized type.

A type like "A.B" can be represented either of two ways:

1. `QualifiedType(SimpleType(SimpleName("A")),SimpleName("B"))`
2. `SimpleType(QualifiedName(SimpleName("A"),SimpleName("B")))`

The first form is preferred when "A" is known to be a type (as opposed to a package). However, a parser cannot always determine this. Clients should be prepared to handle either rather than make assumptions. (Note also that the first form became possible as of JLS3; only the second form existed in JLS2.) 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` `ANONYMOUS_CLASS_DECLARATION_PROPERTY` The "anonymousClassDeclaration" structural property of this node type.
`static ChildListPropertyDescriptor` `ARGUMENTS_PROPERTY` The "arguments" structural property of this node type.
`static ChildPropertyDescriptor` `EXPRESSION_PROPERTY` The "expression" structural property of this node type.
`static ChildPropertyDescriptor` `MEMBER_PROPERTY`
`static ChildPropertyDescriptor` `NAME_PROPERTY` The "name" structural property of this node type .
`static ChildListPropertyDescriptor` `TYPE_ARGUMENTS_PROPERTY` The "typeArguments" structural property of this node type .
`static ChildPropertyDescriptor` `TYPE_PROPERTY` The "type" structural property of this node type (added in JLS3 API).

### 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
`java.util.List` `arguments()` Returns the live ordered list of argument expressions in this class instance creation expression.
`AnonymousClassDeclaration` `getAnonymousClassDeclaration()` Returns the anonymous class declaration introduced by this class instance creation expression, if it has one.
`Expression` `getExpression()` Returns the expression of this class instance creation expression, or `null` if there is none.
`Expression` `getMember()`
`Name` `getName()` Returns the name of the type instantiated in this class instance creation expression (JLS2 API only).
`Type` `getType()` Returns the type instantiated in this class instance creation expression (added in JLS3 API).
`static java.util.List` `propertyDescriptors(int apiLevel)` Returns a list of structural property descriptors for this node type.
`IFunctionBinding` `resolveConstructorBinding()` Resolves and returns the binding for the constructor invoked by this expression.
`void` `setAnonymousClassDeclaration(AnonymousClassDeclaration decl)` Sets whether this class instance creation expression declares an anonymous class (that is, has class body declarations).
`void` `setExpression(Expression expression)` Sets or clears the expression of this class instance creation expression.
`void` `setMember(Expression expression)`
`void` `setName(Name name)` Sets the name of the type instantiated in this class instance creation expression (JLS2 API only).
`void` `setType(Type type)` Sets the type instantiated in this class instance creation expression (added in JLS3 API).
`java.util.List` `typeArguments()` Returns the live ordered list of type arguments of this class instance creation (added in JLS3 API).

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

`resolveBoxing, resolveConstantExpressionValue, resolveTypeBinding, resolveUnboxing`

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

#### TYPE_ARGUMENTS_PROPERTY

    public static final ChildListPropertyDescriptor TYPE_ARGUMENTS_PROPERTY

The "typeArguments" structural property of this node type .

#### EXPRESSION_PROPERTY

    public static final ChildPropertyDescriptor EXPRESSION_PROPERTY

The "expression" structural property of this node type.

#### NAME_PROPERTY

    public static final ChildPropertyDescriptor NAME_PROPERTY

The "name" structural property of this node type .

#### TYPE_PROPERTY

    public static final ChildPropertyDescriptor TYPE_PROPERTY

The "type" structural property of this node type (added in JLS3 API).

#### ARGUMENTS_PROPERTY

    public static final ChildListPropertyDescriptor ARGUMENTS_PROPERTY

The "arguments" structural property of this node type.

#### ANONYMOUS_CLASS_DECLARATION_PROPERTY

    public static final ChildPropertyDescriptor ANONYMOUS_CLASS_DECLARATION_PROPERTY

The "anonymousClassDeclaration" structural property of this node type.

#### MEMBER_PROPERTY

    public static final ChildPropertyDescriptor MEMBER_PROPERTY

### 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 class instance creation expression, or `null` if there is none.

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

#### getMember

    public Expression getMember()

#### setExpression

    public void setExpression(Expression expression)

Sets or clears the expression of this class instance creation expression.

Parameters:
  `expression` - the expression 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

#### setMember

    public void setMember(Expression expression)

#### typeArguments

    public java.util.List typeArguments()

Returns the live ordered list of type arguments of this class instance creation (added in JLS3 API).

Returns:
  the live list of type arguments (element type: `Type`)
Throws:
  `java.lang.UnsupportedOperationException` - if this operation is used in a JLS2 AST

#### getName

    public Name getName()

Returns the name of the type instantiated in this class instance creation expression (JLS2 API only).

Returns:
  the type name node

#### setName

    public void setName(Name name)

Sets the name of the type instantiated in this class instance creation expression (JLS2 API only).

Parameters:
  `name` - the new type name
Throws:
  `java.lang.IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent
  `

#### getType

    public Type getType()

Returns the type instantiated in this class instance creation expression (added in JLS3 API).

Returns:
  the type node

#### setType

    public void setType(Type type)

Sets the type instantiated in this class instance creation expression (added in JLS3 API).

Parameters:
  `type` - the new type
Throws:
  `java.lang.IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent
  `

#### arguments

    public java.util.List arguments()

Returns the live ordered list of argument expressions in this class instance creation expression.

Returns:
  the live list of argument expressions (possibly empty) (element type: `Expression`)

#### getAnonymousClassDeclaration

    public AnonymousClassDeclaration getAnonymousClassDeclaration()

Returns the anonymous class declaration introduced by this class instance creation expression, if it has one.

Returns:
  the anonymous class declaration, or `null` if none

#### setAnonymousClassDeclaration

    public void setAnonymousClassDeclaration(AnonymousClassDeclaration decl)

Sets whether this class instance creation expression declares an anonymous class (that is, has class body declarations).

Parameters:
  `decl` - the anonymous class declaration, or `null` if none

#### resolveConstructorBinding

    public IFunctionBinding resolveConstructorBinding()

Resolves and returns the binding for the constructor invoked by this expression. For anonymous classes, the binding is that of the anonymous constructor.

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

Returns:
  the constructor binding, or `null` if the binding cannot be resolved