Package org.eclipse.jdt.core

# Interface IAnnotation

All Superinterfaces:
  `IAdaptable`, `IJavaElement`, `ISourceReference`

public interface IAnnotation extends IJavaElement, ISourceReference
Represents an annotation on a package declaration, a type, a method, a field or a local variable in a compilation unit or a class file.

Annotations are obtained using `IAnnotatable.getAnnotation(String)`.

Note that annotations are not children of their declaring element. To get a list of the annotations use `IAnnotatable.getAnnotations()`.

Since:
  3.4
Restriction:
  This interface is not intended to be implemented by clients.

## Field Summary

### Fields inherited from interface org.eclipse.jdt.core.IJavaElement

`ANNOTATION, CLASS_FILE, COMPILATION_UNIT, FIELD, IMPORT_CONTAINER, IMPORT_DECLARATION, INITIALIZER, JAVA_MODEL, JAVA_MODULE, JAVA_PROJECT, LOCAL_VARIABLE, METHOD, PACKAGE_DECLARATION, PACKAGE_FRAGMENT, PACKAGE_FRAGMENT_ROOT, TYPE, TYPE_PARAMETER`

## Method Summary

Modifier and Type
Method
Description
`String`
`getElementName()`
Returns the name of this annotation.
`IMemberValuePair[]`
`getMemberValuePairs()`
Returns the member-value pairs of this annotation.
`int`
`getOccurrenceCount()`
Returns the position relative to the order this annotation is defined in the source.

### Methods inherited from interface org.eclipse.core.runtime.IAdaptable

`getAdapter`

### Methods inherited from interface org.eclipse.jdt.core.IJavaElement

`exists, getAncestor, getAttachedJavadoc, getCorrespondingResource, getElementType, getHandleIdentifier, getJavaModel, getJavaProject, getOpenable, getParent, getPath, getPrimaryElement, getResource, getSchedulingRule, getUnderlyingResource, isReadOnly, isStructureKnown`

### Methods inherited from interface org.eclipse.jdt.core.ISourceReference

`exists, getNameRange, getSource, getSourceRange`

## Method Details

### getElementName

String getElementName()
Returns the name of this annotation. If this annotation is coming from a compilation unit, this is either a simple name (e.g. for `@MyAnnot`, the name is "MyAnnot"), or a qualified name (e.g. for `@x. y. MyAnnot`, the name is "x.y.MyAnnot"). If this annotation is coming from a class file, this is always a fully qualified name.

Note that the name has been trimmed from its whitespaces. To extract the name as it appears in the source, use `ISourceReference.getNameRange()`.

This is a handle-only method. The annotation may or may not be present.

Specified by:
  `getElementName` in interface `IJavaElement`
Returns:
  the name of this annotation

### getMemberValuePairs

IMemberValuePair[] getMemberValuePairs() throws JavaModelException
Returns the member-value pairs of this annotation. Returns an empty array if this annotation is a marker annotation. Returns a size-1 array if this annotation is a single member annotation. In this case, the member name is always `"value"`.

Returns:
  the member-value pairs of this annotation
Throws:
  `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource

### getOccurrenceCount

int getOccurrenceCount()
Returns the position relative to the order this annotation is defined in the source. Numbering starts at 1 (thus the first occurrence is occurrence 1, not occurrence 0).

Two annotations ann1 and ann2 that are equal (e.g. 2 annotations with the same name on the same type) can be distinguished using their occurrence counts. If annotation ann1 appears first in the source, it will have an occurrence count of 1. If annotation ann2 appears right after annotation ann1, it will have an occurrence count of 2.

This is a handle-only method. The annotation may or may not be present.

Returns:
  the position relative to the order this annotation is defined in the source