Package org.eclipse.jdt.core.dom

# Class ImportDeclaration

java.lang.Object
org.eclipse.jdt.core.dom.ASTNode
org.eclipse.jdt.core.dom.ImportDeclaration

public class ImportDeclaration extends ASTNode
Import declaration AST node type.

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

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

## Field Summary

Fields
Modifier and Type
Field
Description
`static final ChildPropertyDescriptor`
`NAME_PROPERTY`
The "name" structural property of this node type (child type: `Name`).
`static final SimplePropertyDescriptor`
`ON_DEMAND_PROPERTY`
The "onDemand" structural property of this node type (type: `Boolean`).
`static final SimplePropertyDescriptor`
`STATIC_PROPERTY`
The "static" structural property of this node type (type: `Boolean`) (added in JLS3 API).

### 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, CASE_DEFAULT_EXPRESSION, 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, ENHANCED_FOR_WITH_RECORD_PATTERN, ENUM_CONSTANT_DECLARATION, ENUM_DECLARATION, EXPORTS_DIRECTIVE, EXPRESSION_METHOD_REFERENCE, EXPRESSION_STATEMENT, FIELD_ACCESS, FIELD_DECLARATION, FOR_STATEMENT, GUARDED_PATTERN, IF_STATEMENT, IMPORT_DECLARATION, INFIX_EXPRESSION, INITIALIZER, INSTANCEOF_EXPRESSION, INTERSECTION_TYPE, JAVADOC, JAVADOC_REGION, JAVADOC_TEXT_ELEMENT, 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, MODULE_QUALIFIED_NAME, NAME_QUALIFIED_TYPE, NORMAL_ANNOTATION, NULL_LITERAL, NULL_PATTERN, NUMBER_LITERAL, OPENS_DIRECTIVE, ORIGINAL, PACKAGE_DECLARATION, PARAMETERIZED_TYPE, PARENTHESIZED_EXPRESSION, PATTERN_INSTANCEOF_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, PROVIDES_DIRECTIVE, QUALIFIED_NAME, QUALIFIED_TYPE, RECORD_DECLARATION, RECORD_PATTERN, 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, TAG_PROPERTY, TEXT_BLOCK, TEXT_ELEMENT, THIS_EXPRESSION, THROW_STATEMENT, TRY_STATEMENT, TYPE_DECLARATION, TYPE_DECLARATION_STATEMENT, TYPE_LITERAL, TYPE_METHOD_REFERENCE, TYPE_PARAMETER, TYPE_PATTERN, UNION_TYPE, USES_DIRECTIVE, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WILDCARD_TYPE, YIELD_STATEMENT`

## Method Summary

Modifier and Type
Method
Description
`Name`
`getName()`
Returns the name imported by this declaration.
`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 List`
`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`
`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`
`setStatic(boolean isStatic)`
Sets whether this import declaration is a static import (added in JLS3 API).

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

### NAME_PROPERTY

public static final ChildPropertyDescriptor NAME_PROPERTY
The "name" structural property of this node type (child type: `Name`).

Since:
  3.0

### ON_DEMAND_PROPERTY

public static final SimplePropertyDescriptor ON_DEMAND_PROPERTY
The "onDemand" structural property of this node type (type: `Boolean`).

Since:
  3.0

### STATIC_PROPERTY

public static final SimplePropertyDescriptor STATIC_PROPERTY
The "static" structural property of this node type (type: `Boolean`) (added in JLS3 API).

Since:
  3.1

## Method Details

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

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

### 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:
  `UnsupportedOperationException` - if this operation is used in a JLS2 AST
Since:
  3.1

### 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:
  `UnsupportedOperationException` - if this operation is used in a JLS2 AST
Since:
  3.1

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