org.eclipse.wst.jsdt.core.dom

## Class ImportDeclaration

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

    public class ImportDeclaration
    extends ASTNode

Import declaration AST node type. For JLS2:

     ImportDeclaration:
        import Name [ . * ] ;

For JLS3, static was added:

     ImportDeclaration:
        import [ static ] Name [ . * ] ;

Note: This Class only applies to ECMAScript 4 which is not yet supported

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 SimplePropertyDescriptor` `ISFILE_PROPERTY`
`static ChildPropertyDescriptor` `NAME_PROPERTY` The "name" structural property of this node type.
`static SimplePropertyDescriptor` `ON_DEMAND_PROPERTY` The "onDemand" structural property of this node type.
`static ChildPropertyDescriptor` `SOURCE_PROPERTY` The "source" structural property of this node type.
`static ChildListPropertyDescriptor` `SPECIFIERS_PROPERTY` The "specifiers" structural property of this node type
`static SimplePropertyDescriptor` `STATIC_PROPERTY` The "static" 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
`Name` `getName()` Returns the name imported by this declaration.
`StringLiteral` `getSource()`
`boolean` `isFileImport()`
`boolean` `isOnDemand()` Returns whether this import declaration is an on-demand or a single-type import.
`boolean` `isStatic()` Returns whether this import declaration is a static import (added in JLS3 API).
`static java.util.List<StructuralPropertyDescriptor>` `propertyDescriptors(int apiLevel)` Returns a list of structural property descriptors for this node type.
`IBinding` `resolveBinding()` Resolves and returns the binding for the package, type, field, or method named in this import declaration.
`void` `setIsFileImport(boolean isFileImport)`
`void` `setName(Name name)` Sets the name of this import declaration to the given name.
`void` `setOnDemand(boolean onDemand)` Sets whether this import declaration is an on-demand or a single-type import.
`void` `setSource(StringLiteral source)`
`void` `setStatic(boolean isStatic)` Sets whether this import declaration is a static import (added in JLS3 API).
`java.util.List` `specifiers()`

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

#### SOURCE_PROPERTY

    public static final ChildPropertyDescriptor SOURCE_PROPERTY

The "source" structural property of this node type.

Since:
  2.0

#### SPECIFIERS_PROPERTY

    public static final ChildListPropertyDescriptor SPECIFIERS_PROPERTY

The "specifiers" structural property of this node type

Since:
  2.0

#### NAME_PROPERTY

    public static final ChildPropertyDescriptor NAME_PROPERTY

The "name" structural property of this node type.

#### ON_DEMAND_PROPERTY

    public static final SimplePropertyDescriptor ON_DEMAND_PROPERTY

The "onDemand" structural property of this node type.

#### STATIC_PROPERTY

    public static final SimplePropertyDescriptor STATIC_PROPERTY

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

#### ISFILE_PROPERTY

    public static final SimplePropertyDescriptor ISFILE_PROPERTY

### Method Detail

#### propertyDescriptors

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

#### getName

    public Name getName()

Returns the name imported by this declaration.

For a regular on-demand import, this is the name of a package. For a static on-demand import, this is the qualified name of a type. For a regular single-type import, this is the qualified name of a type. For a static single-type import, this is the qualified name of a static member of a type.

Returns:
  the imported name node

#### setName

    public void setName(Name name)

Sets the name of this import declaration to the given name.

For a regular on-demand import, this is the name of a package. For a static on-demand import, this is the qualified name of a type. For a regular single-type import, this is the qualified name of a type. For a static single-type import, this is the qualified name of a static member of a type.

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

#### isOnDemand

    public boolean isOnDemand()

Returns whether this import declaration is an on-demand or a single-type import.

Returns:
  `true` if this is an on-demand import, and `false` if this is a single type import

#### setOnDemand

    public void setOnDemand(boolean onDemand)

Sets whether this import declaration is an on-demand or a single-type import.

Parameters:
  `onDemand` - `true` if this is an on-demand import, and `false` if this is a single type import

#### setIsFileImport

    public void setIsFileImport(boolean isFileImport)

#### isStatic

    public boolean isStatic()

Returns whether this import declaration is a static import (added in JLS3 API).

Returns:
  `true` if this is a static import, and `false` if this is a regular import
Throws:
  `java.lang.UnsupportedOperationException` - if this operation is used in a JLS2 AST

#### setStatic

    public void setStatic(boolean isStatic)

Sets whether this import declaration is a static import (added in JLS3 API).

Parameters:
  `isStatic` - `true` if this is a static import, and `false` if this is a regular import
Throws:
  `java.lang.UnsupportedOperationException` - if this operation is used in a JLS2 AST

#### getSource

    public StringLiteral getSource()

Since:
  2.0

#### setSource

    public void setSource(StringLiteral source)

Since:
  2.0

#### specifiers

    public java.util.List specifiers()

Since:
  2.0

#### resolveBinding

    public IBinding resolveBinding()

Resolves and returns the binding for the package, type, field, or method named in this import declaration.

The name specified in a non-static single-type import can resolve to a type (only). The name specified in a non-static on-demand import can itself resolve to either a package or a type. For static imports (introduced in JLS3), the name specified in a static on-demand import can itself resolve to a type (only). The name specified in a static single import can resolve to a type, field, or method; in cases where the name could be resolved to more than one element with that name (for example, two methods both named "max", or a method and a field), this method returns one of the plausible bindings.

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

Returns:
  a package, type, field, or method binding, or `null` if the binding cannot be resolved

#### isFileImport

    public boolean isFileImport()