Package org.eclipse.jdt.core.dom

# Class Annotation

java.lang.Object
org.eclipse.jdt.core.dom.ASTNode
org.eclipse.jdt.core.dom.Expression
org.eclipse.jdt.core.dom.Annotation

All Implemented Interfaces:
  `IExtendedModifier`

Direct Known Subclasses:
  `MarkerAnnotation`, `NormalAnnotation`, `SingleMemberAnnotation`

public abstract class Annotation extends Expression implements IExtendedModifier
Abstract base class of AST nodes that represent annotations.

     Annotation:
                    NormalAnnotation
                    MarkerAnnotation
                    SingleMemberAnnotation

Since:
  3.1

## Field Summary

### 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`
`getTypeName()`
Returns the annotation type name of this annotation.
`final ChildPropertyDescriptor`
`getTypeNameProperty()`
Returns structural property descriptor for the "typeName" property of this node (child type: `Name`).
`boolean`
`isAnnotation()`
Returns whether this extended modifier is an annotation.
`boolean`
`isMarkerAnnotation()`
Returns whether this is a marker annotation (`MarkerAnnotation`).
`boolean`
`isModifier()`
Returns whether this extended modifier is a standard modifier.
`boolean`
`isNormalAnnotation()`
Returns whether this is a normal annotation (`NormalAnnotation`).
`boolean`
`isSingleMemberAnnotation()`
Returns whether this is a single member annotation
`IAnnotationBinding`
`resolveAnnotationBinding()`
Resolves and returns the resolved annotation for this annotation.
`void`
`setTypeName(Name typeName)`
Sets the annotation type name of this annotation.

### Methods inherited from class org.eclipse.jdt.core.dom.Expression

`resolveBoxing, resolveConstantExpressionValue, resolveTypeBinding, resolveUnboxing`

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

## Method Details

### getTypeNameProperty

public final ChildPropertyDescriptor getTypeNameProperty()
Returns structural property descriptor for the "typeName" property of this node (child type: `Name`).

Returns:
  the property descriptor

### isModifier

public boolean isModifier()
Description copied from interface: `IExtendedModifier`
Returns whether this extended modifier is a standard modifier.

Specified by:
  `isModifier` in interface `IExtendedModifier`
Returns:
  `true` if this is a standard modifier (instance of `Modifier`), and `false` otherwise
See Also:
  - `IExtendedModifier.isModifier()`

### isAnnotation

public boolean isAnnotation()
Description copied from interface: `IExtendedModifier`
Returns whether this extended modifier is an annotation.

Specified by:
  `isAnnotation` in interface `IExtendedModifier`
Returns:
  `true` if this is an annotation (instance of a subclass of `Annotation`), and `false` otherwise
See Also:
  - `IExtendedModifier.isAnnotation()`

### getTypeName

public Name getTypeName()
Returns the annotation type name of this annotation.

Returns:
  the annotation type name

### setTypeName

public void setTypeName(Name typeName)
Sets the annotation type name of this annotation.

Parameters:
  `typeName` - the annotation type name
Throws:
  `IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent

### isNormalAnnotation

public boolean isNormalAnnotation()
Returns whether this is a normal annotation (`NormalAnnotation`).

Returns:
  `true` if this is a normal annotation, and `false` otherwise

### isMarkerAnnotation

public boolean isMarkerAnnotation()
Returns whether this is a marker annotation (`MarkerAnnotation`).

Returns:
  `true` if this is a marker annotation, and `false` otherwise

### isSingleMemberAnnotation

public boolean isSingleMemberAnnotation()
Returns whether this is a single member annotation. (`SingleMemberAnnotation`).

Returns:
  `true` if this is a single member annotation, and `false` otherwise

### resolveAnnotationBinding

public IAnnotationBinding resolveAnnotationBinding()
Resolves and returns the resolved annotation for this annotation.

Note that bindings (which includes resolved annotations) are generally unavailable unless requested when the AST is being built.

Returns:
  the resolved annotation, or `null` if the annotation cannot be resolved
Since:
  3.2