Package com.sun.mirror.declaration

## Interface Declaration

All Known Subinterfaces:
  `AnnotationTypeDeclaration`, `AnnotationTypeElementDeclaration`, `ClassDeclaration`, `ConstructorDeclaration`, `EnumConstantDeclaration`, `EnumDeclaration`, `ExecutableDeclaration`, `FieldDeclaration`, `InterfaceDeclaration`, `MemberDeclaration`, `MethodDeclaration`, `PackageDeclaration`, `ParameterDeclaration`, `TypeDeclaration`, `TypeParameterDeclaration`

    public interface Declaration

Represents the declaration of a program element such as a package, class, or method. Each declaration represents a static, language-level construct (and not, for example, a runtime construct of the virtual machine), and typically corresponds one-to-one with a particular fragment of source code.

Declarations should be compared using the `equals(Object)` method. There is no guarantee that any particular declaration will always be represented by the same object.

Since:
  1.5
See Also:
  `Declarations`, `TypeMirror`

### Method Summary

All Methods Instance Methods Abstract Methods
`void` `accept​(DeclarationVisitor v)` Applies a visitor to this declaration.
`boolean` `equals​(Object obj)` Tests whether an object represents the same declaration as this.
`<A extends Annotation> A` `getAnnotation​(Class<A> annotationType)` Returns the annotation of this declaration having the specified type.
`Collection<AnnotationMirror>` `getAnnotationMirrors()` Returns the annotations that are directly present on this declaration.
`String` `getDocComment()` Returns the text of the documentation ("javadoc") comment of this declaration.
`Collection<Modifier>` `getModifiers()` Returns the modifiers of this declaration, excluding annotations.
`SourcePosition` `getPosition()` Returns the source position of the beginning of this declaration.
`String` `getSimpleName()` Returns the simple (unqualified) name of this declaration.

### Method Detail

#### equals

    boolean equals​(Object obj)

Tests whether an object represents the same declaration as this.

Overrides:
  `equals` in class `Object`
Parameters:
  `obj` - the object to be compared with this declaration
Returns:
  `true` if the specified object represents the same declaration as this

#### getDocComment

    String getDocComment()

Returns the text of the documentation ("javadoc") comment of this declaration.

Returns:
  the documentation comment of this declaration, or `null` if there is none

#### getAnnotationMirrors

    Collection<AnnotationMirror> getAnnotationMirrors()

Returns the annotations that are directly present on this declaration.

Returns:
  the annotations directly present on this declaration; an empty collection if there are none

#### getAnnotation

    <A extends Annotation> A getAnnotation​(Class<A> annotationType)

Returns the annotation of this declaration having the specified type. The annotation may be either inherited or directly present on this declaration.

The annotation returned by this method could contain an element whose value is of type `Class`. This value cannot be returned directly: information necessary to locate and load a class (such as the class loader to use) is not available, and the class might not be loadable at all. Attempting to read a `Class` object by invoking the relevant method on the returned annotation will result in a `MirroredTypeException`, from which the corresponding `TypeMirror` may be extracted. Similarly, attempting to read a `Class[]`-valued element will result in a `MirroredTypesException`.

> Note: This method is unlike others in this and related interfaces. It operates on run-time reflective information -- representations of annotation types currently loaded into the VM -- rather than on the mirrored representations defined by and used throughout these interfaces. It is intended for callers that are written to operate on a known, fixed set of annotation types.

Type Parameters:
  `A` - the annotation type
Parameters:
  `annotationType` - the `Class` object corresponding to the annotation type
Returns:
  the annotation of this declaration having the specified type
See Also:
  `getAnnotationMirrors()`

#### getModifiers

    Collection<Modifier> getModifiers()

Returns the modifiers of this declaration, excluding annotations. Implicit modifiers, such as the `public` and `static` modifiers of interface members, are included.

Returns:
  the modifiers of this declaration in undefined order; an empty collection if there are none

#### getSimpleName

    String getSimpleName()

Returns the simple (unqualified) name of this declaration. The name of a generic type does not include any reference to its formal type parameters. For example, the simple name of the interface declaration `java.util.Set<E>` is `"Set"`. If this declaration represents the empty package, an empty string is returned. If it represents a constructor, the simple name of its declaring class is returned.

Returns:
  the simple name of this declaration

#### getPosition

    SourcePosition getPosition()

Returns the source position of the beginning of this declaration. Returns `null` if the position is unknown or not applicable.

This source position is intended for use in providing diagnostics, and indicates only approximately where a declaration begins.

Returns:
  the source position of the beginning of this declaration, or null if the position is unknown or not applicable

#### accept

    void accept​(DeclarationVisitor v)

Applies a visitor to this declaration.

Parameters:
  `v` - the visitor operating on this declaration