## Uses of Interface
java.lang.annotation.Annotation

- Packages that use Annotation
  Package | Description
  --- | ---
  java.beans | Contains classes related to developing beans -- components based on the JavaBeans™ architecture.
  java.lang | Provides classes that are fundamental to the design of the Java programming language.
  java.lang.annotation | Provides library support for the Java programming language annotation facility.
  java.lang.reflect | Provides classes and interfaces for obtaining reflective information about classes and objects.
  javax.annotation |
  javax.annotation.processing | Facilities for declaring annotation processors and for allowing annotation processors to communicate with an annotation processing tool environment.
  javax.jws |
  javax.jws.soap |
  javax.lang.model | Classes and hierarchies of packages used to model the Java programming language.
  javax.lang.model.element | Interfaces used to model elements of the Java programming language.
  javax.management | Provides the core classes for the Java Management Extensions.
  javax.xml.bind.annotation | Defines annotations for customizing Java program elements to XML Schema mapping.
  javax.xml.bind.annotation.adapters | `XmlAdapter` and its spec-defined sub-classes to allow arbitrary Java classes to be used with JAXB.
  javax.xml.ws | This package contains the core JAX-WS APIs.
  javax.xml.ws.soap | This package defines APIs specific to the SOAP binding.
  javax.xml.ws.spi | This package defines SPIs for JAX-WS.

- - ### Uses of Annotation in java.beans

    Classes in java.beans that implement Annotation
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `ConstructorProperties` An annotation on a constructor that shows how the parameters of that constructor correspond to the constructed object's getter methods.
    `interface` | `Transient` Indicates that an attribute called "transient" should be declared with the given `value` when the `Introspector` constructs a `PropertyDescriptor` or `EventSetDescriptor` classes associated with the annotated code element.

  - ### Uses of Annotation in java.lang

    Classes in java.lang that implement Annotation
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `Deprecated` A program element annotated @Deprecated is one that programmers are discouraged from using, typically because it is dangerous, or because a better alternative exists.
    `interface` | `FunctionalInterface` An informative annotation type used to indicate that an interface type declaration is intended to be a functional interface as defined by the Java Language Specification.
    `interface` | `Override` Indicates that a method declaration is intended to override a method declaration in a supertype.
    `interface` | `SafeVarargs` A programmer assertion that the body of the annotated method or constructor does not perform potentially unsafe operations on its varargs parameter.
    `interface` | `SuppressWarnings` Indicates that the named compiler warnings should be suppressed in the annotated element (and in all program elements contained in the annotated element).

    Methods in java.lang with type parameters of type Annotation
    Modifier and Type | Method | Description
    --- | --- | ---
    `<A extends Annotation> A` | Package.`getAnnotation(Class<A> annotationClass)`
    `<A extends Annotation> A` | Class.`getAnnotation(Class<A> annotationClass)`
    `<A extends Annotation> A[]` | Package.`getAnnotationsByType(Class<A> annotationClass)`
    `<A extends Annotation> A[]` | Class.`getAnnotationsByType(Class<A> annotationClass)`
    `<A extends Annotation> A` | Package.`getDeclaredAnnotation(Class<A> annotationClass)`
    `<A extends Annotation> A` | Class.`getDeclaredAnnotation(Class<A> annotationClass)`
    `<A extends Annotation> A[]` | Package.`getDeclaredAnnotationsByType(Class<A> annotationClass)`
    `<A extends Annotation> A[]` | Class.`getDeclaredAnnotationsByType(Class<A> annotationClass)`

    Methods in java.lang that return Annotation
    Modifier and Type | Method | Description
    --- | --- | ---
    `Annotation[]` | Package.`getAnnotations()`
    `Annotation[]` | Class.`getAnnotations()`
    `<A extends Annotation> A[]` | Package.`getAnnotationsByType(Class<A> annotationClass)`
    `<A extends Annotation> A[]` | Class.`getAnnotationsByType(Class<A> annotationClass)`
    `Annotation[]` | Package.`getDeclaredAnnotations()`
    `Annotation[]` | Class.`getDeclaredAnnotations()`
    `<A extends Annotation> A[]` | Package.`getDeclaredAnnotationsByType(Class<A> annotationClass)`
    `<A extends Annotation> A[]` | Class.`getDeclaredAnnotationsByType(Class<A> annotationClass)`

    Method parameters in java.lang with type arguments of type Annotation
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | Package.`isAnnotationPresent(Class<? extends Annotation> annotationClass)` Returns true if an annotation for the specified type is present on this element, else false.
    `boolean` | Class.`isAnnotationPresent(Class<? extends Annotation> annotationClass)` Returns true if an annotation for the specified type is present on this element, else false.

  - ### Uses of Annotation in java.lang.annotation

    Classes in java.lang.annotation that implement Annotation
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `Documented` Indicates that annotations with a type are to be documented by javadoc and similar tools by default.
    `interface` | `Inherited` Indicates that an annotation type is automatically inherited.
    `interface` | `Native` Indicates that a field defining a constant value may be referenced from native code.
    `interface` | `Repeatable` The annotation type `java.lang.annotation.Repeatable` is used to indicate that the annotation type whose declaration it (meta-)annotates is repeatable.
    `interface` | `Retention` Indicates how long annotations with the annotated type are to be retained.
    `interface` | `Target` Indicates the contexts in which an annotation type is applicable.

    Methods in java.lang.annotation that return types with arguments of type Annotation
    Modifier and Type | Method | Description
    --- | --- | ---
    `Class<? extends Annotation>` | IncompleteAnnotationException.`annotationType()` Returns the Class object for the annotation type with the missing element.
    `Class<? extends Annotation>` | Annotation.`annotationType()` Returns the annotation type of this annotation.

    Constructor parameters in java.lang.annotation with type arguments of type Annotation
    Constructor | Description
    --- | ---
    `IncompleteAnnotationException(Class<? extends Annotation> annotationType, String elementName)` Constructs an IncompleteAnnotationException to indicate that the named element was missing from the specified annotation type.

  - ### Uses of Annotation in java.lang.reflect

    Methods in java.lang.reflect with type parameters of type Annotation
    Modifier and Type | Method | Description
    --- | --- | ---
    `<T extends Annotation> T` | Parameter.`getAnnotation(Class<T> annotationClass)` Returns this element's annotation for the specified type if such an annotation is present, else null.
    `<T extends Annotation> T` | Field.`getAnnotation(Class<T> annotationClass)`
    `<T extends Annotation> T` | Method.`getAnnotation(Class<T> annotationClass)` Returns this element's annotation for the specified type if such an annotation is present, else null.
    `<T extends Annotation> T` | AccessibleObject.`getAnnotation(Class<T> annotationClass)`
    `<T extends Annotation> T` | Executable.`getAnnotation(Class<T> annotationClass)` Returns this element's annotation for the specified type if such an annotation is present, else null.
    `<T extends Annotation> T` | Constructor.`getAnnotation(Class<T> annotationClass)` Returns this element's annotation for the specified type if such an annotation is present, else null.
    `<T extends Annotation> T` | AnnotatedElement.`getAnnotation(Class<T> annotationClass)` Returns this element's annotation for the specified type if such an annotation is present, else null.
    `<T extends Annotation> T[]` | Parameter.`getAnnotationsByType(Class<T> annotationClass)` Returns annotations that are associated with this element.
    `<T extends Annotation> T[]` | Field.`getAnnotationsByType(Class<T> annotationClass)` Returns annotations that are associated with this element.
    `<T extends Annotation> T[]` | AccessibleObject.`getAnnotationsByType(Class<T> annotationClass)`
    `<T extends Annotation> T[]` | Executable.`getAnnotationsByType(Class<T> annotationClass)` Returns annotations that are associated with this element.
    `default <T extends Annotation> T[]` | AnnotatedElement.`getAnnotationsByType(Class<T> annotationClass)` Returns annotations that are associated with this element.
    `<T extends Annotation> T` | Parameter.`getDeclaredAnnotation(Class<T> annotationClass)`
    `<T extends Annotation> T` | AccessibleObject.`getDeclaredAnnotation(Class<T> annotationClass)`
    `default <T extends Annotation> T` | AnnotatedElement.`getDeclaredAnnotation(Class<T> annotationClass)` Returns this element's annotation for the specified type if such an annotation is directly present, else null.
    `<T extends Annotation> T[]` | Parameter.`getDeclaredAnnotationsByType(Class<T> annotationClass)`
    `<T extends Annotation> T[]` | AccessibleObject.`getDeclaredAnnotationsByType(Class<T> annotationClass)`
    `default <T extends Annotation> T[]` | AnnotatedElement.`getDeclaredAnnotationsByType(Class<T> annotationClass)` Returns this element's annotation(s) for the specified type if such annotations are either directly present or indirectly present.

    Methods in java.lang.reflect that return Annotation
    Modifier and Type | Method | Description
    --- | --- | ---
    `Annotation[]` | Parameter.`getAnnotations()` Returns annotations that are present on this element.
    `Annotation[]` | AccessibleObject.`getAnnotations()`
    `Annotation[]` | AnnotatedElement.`getAnnotations()` Returns annotations that are present on this element.
    `<T extends Annotation> T[]` | Parameter.`getAnnotationsByType(Class<T> annotationClass)` Returns annotations that are associated with this element.
    `<T extends Annotation> T[]` | Field.`getAnnotationsByType(Class<T> annotationClass)` Returns annotations that are associated with this element.
    `<T extends Annotation> T[]` | AccessibleObject.`getAnnotationsByType(Class<T> annotationClass)`
    `<T extends Annotation> T[]` | Executable.`getAnnotationsByType(Class<T> annotationClass)` Returns annotations that are associated with this element.
    `default <T extends Annotation> T[]` | AnnotatedElement.`getAnnotationsByType(Class<T> annotationClass)` Returns annotations that are associated with this element.
    `Annotation[]` | Parameter.`getDeclaredAnnotations()` Returns annotations that are directly present on this element.
    `Annotation[]` | Field.`getDeclaredAnnotations()` Returns annotations that are directly present on this element.
    `Annotation[]` | Method.`getDeclaredAnnotations()` Returns annotations that are directly present on this element.
    `Annotation[]` | AccessibleObject.`getDeclaredAnnotations()`
    `Annotation[]` | Executable.`getDeclaredAnnotations()` Returns annotations that are directly present on this element.
    `Annotation[]` | Constructor.`getDeclaredAnnotations()` Returns annotations that are directly present on this element.
    `Annotation[]` | AnnotatedElement.`getDeclaredAnnotations()` Returns annotations that are directly present on this element.
    `<T extends Annotation> T[]` | Parameter.`getDeclaredAnnotationsByType(Class<T> annotationClass)`
    `<T extends Annotation> T[]` | AccessibleObject.`getDeclaredAnnotationsByType(Class<T> annotationClass)`
    `default <T extends Annotation> T[]` | AnnotatedElement.`getDeclaredAnnotationsByType(Class<T> annotationClass)` Returns this element's annotation(s) for the specified type if such annotations are either directly present or indirectly present.
    `Annotation[][]` | Method.`getParameterAnnotations()` Returns an array of arrays of `Annotation`s that represent the annotations on the formal parameters, in declaration order, of the `Executable` represented by this object.
    `abstract Annotation[][]` | Executable.`getParameterAnnotations()` Returns an array of arrays of `Annotation`s that represent the annotations on the formal parameters, in declaration order, of the `Executable` represented by this object.
    `Annotation[][]` | Constructor.`getParameterAnnotations()` Returns an array of arrays of `Annotation`s that represent the annotations on the formal parameters, in declaration order, of the `Executable` represented by this object.

    Method parameters in java.lang.reflect with type arguments of type Annotation
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | AccessibleObject.`isAnnotationPresent(Class<? extends Annotation> annotationClass)` Returns true if an annotation for the specified type is present on this element, else false.
    `default boolean` | AnnotatedElement.`isAnnotationPresent(Class<? extends Annotation> annotationClass)` Returns true if an annotation for the specified type is present on this element, else false.

  - ### Uses of Annotation in javax.annotation

    Classes in javax.annotation that implement Annotation
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `Generated` The Generated annotation is used to mark source code that has been generated.
    `interface` | `PostConstruct` The PostConstruct annotation is used on a method that needs to be executed after dependency injection is done to perform any initialization.
    `interface` | `PreDestroy` The PreDestroy annotation is used on methods as a callback notification to signal that the instance is in the process of being removed by the container.
    `interface` | `Resource` The Resource annotation marks a resource that is needed by the application.
    `interface` | `Resources` This class is used to allow multiple resources declarations.

  - ### Uses of Annotation in javax.annotation.processing

    Classes in javax.annotation.processing that implement Annotation
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `SupportedAnnotationTypes` An annotation used to indicate what annotation types an annotation processor supports.
    `interface` | `SupportedOptions` An annotation used to indicate what options an annotation processor supports.
    `interface` | `SupportedSourceVersion` An annotation used to indicate the latest source version an annotation processor supports.

    Method parameters in javax.annotation.processing with type arguments of type Annotation
    Modifier and Type | Method | Description
    --- | --- | ---
    `Set<? extends Element>` | RoundEnvironment.`getElementsAnnotatedWith(Class<? extends Annotation> a)` Returns the elements annotated with the given annotation type.

  - ### Uses of Annotation in javax.jws

    Classes in javax.jws that implement Annotation
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `HandlerChain`
    `interface` | `Oneway`
    `interface` | `WebMethod`
    `interface` | `WebParam`
    `interface` | `WebResult`
    `interface` | `WebService`

  - ### Uses of Annotation in javax.jws.soap

    Classes in javax.jws.soap that implement Annotation
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `InitParam` Deprecated.
    `interface` | `SOAPBinding`
    `interface` | `SOAPMessageHandler` Deprecated.
    `interface` | `SOAPMessageHandlers` Deprecated.

  - ### Uses of Annotation in javax.lang.model

    Methods in javax.lang.model with type parameters of type Annotation
    Modifier and Type | Method | Description
    --- | --- | ---
    `<A extends Annotation> A` | AnnotatedConstruct.`getAnnotation(Class<A> annotationType)` Returns this construct's annotation of the specified type if such an annotation is present, else `null`.
    `<A extends Annotation> A[]` | AnnotatedConstruct.`getAnnotationsByType(Class<A> annotationType)` Returns annotations that are associated with this construct.

    Methods in javax.lang.model that return Annotation
    Modifier and Type | Method | Description
    --- | --- | ---
    `<A extends Annotation> A[]` | AnnotatedConstruct.`getAnnotationsByType(Class<A> annotationType)` Returns annotations that are associated with this construct.

  - ### Uses of Annotation in javax.lang.model.element

    Methods in javax.lang.model.element with type parameters of type Annotation
    Modifier and Type | Method | Description
    --- | --- | ---
    `<A extends Annotation> A` | Element.`getAnnotation(Class<A> annotationType)` Returns this construct's annotation of the specified type if such an annotation is present, else `null`.

  - ### Uses of Annotation in javax.management

    Classes in javax.management that implement Annotation
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `DescriptorKey` Meta-annotation that describes how an annotation element relates to a field in a `Descriptor`.
    `interface` | `MXBean` Annotation to mark an interface explicitly as being an MXBean interface, or as not being an MXBean interface.

  - ### Uses of Annotation in javax.xml.bind.annotation

    Classes in javax.xml.bind.annotation that implement Annotation
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `XmlAccessorOrder` Controls the ordering of fields and properties in a class.
    `interface` | `XmlAccessorType` Controls whether fields or Javabean properties are serialized by default.
    `interface` | `XmlAnyAttribute` Maps a JavaBean property to a map of wildcard attributes.
    `interface` | `XmlAnyElement` Maps a JavaBean property to XML infoset representation and/or JAXB element.
    `interface` | `XmlAttachmentRef` Marks a field/property that its XML form is a uri reference to mime content.
    `interface` | `XmlAttribute` Maps a JavaBean property to a XML attribute.
    `interface` | `XmlElement` Maps a JavaBean property to a XML element derived from property name.
    `interface` | `XmlElementDecl` Maps a factory method to a XML element.
    `interface` | `XmlElementRef` Maps a JavaBean property to a XML element derived from property's type.
    `interface` | `XmlElementRefs` Marks a property that refers to classes with `XmlElement` or JAXBElement.
    `interface` | `XmlElements` A container for multiple @`XmlElement` annotations.
    `interface` | `XmlElementWrapper` Generates a wrapper element around XML representation.
    `interface` | `XmlEnum` Maps an enum type `Enum` to XML representation.
    `interface` | `XmlEnumValue` Maps an enum constant in `Enum` type to XML representation.
    `interface` | `XmlID` Maps a JavaBean property to XML ID.
    `interface` | `XmlIDREF` Maps a JavaBean property to XML IDREF.
    `interface` | `XmlInlineBinaryData` Disable consideration of XOP encoding for datatypes that are bound to base64-encoded binary data in XML.
    `interface` | `XmlList` Used to map a property to a list simple type.
    `interface` | `XmlMimeType` Associates the MIME type that controls the XML representation of the property.
    `interface` | `XmlMixed` Annotate a JavaBean multi-valued property to support mixed content.
    `interface` | `XmlNs` Associates a namespace prefix with a XML namespace URI.
    `interface` | `XmlRegistry` Marks a class that has `XmlElementDecl`s.
    `interface` | `XmlRootElement` Maps a class or an enum type to an XML element.
    `interface` | `XmlSchema` Maps a package name to a XML namespace.
    `interface` | `XmlSchemaType` Maps a Java type to a simple schema built-in type.
    `interface` | `XmlSchemaTypes` A container for multiple @`XmlSchemaType` annotations.
    `interface` | `XmlSeeAlso` Instructs JAXB to also bind other classes when binding this class.
    `interface` | `XmlTransient` Prevents the mapping of a JavaBean property/type to XML representation.
    `interface` | `XmlType` Maps a class or an enum type to a XML Schema type.
    `interface` | `XmlValue` Enables mapping a class to a XML Schema complex type with a simpleContent or a XML Schema simple type.

  - ### Uses of Annotation in javax.xml.bind.annotation.adapters

    Classes in javax.xml.bind.annotation.adapters that implement Annotation
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `XmlJavaTypeAdapter` Use an adapter that implements `XmlAdapter` for custom marshaling.
    `interface` | `XmlJavaTypeAdapters` A container for multiple @`XmlJavaTypeAdapter` annotations.

  - ### Uses of Annotation in javax.xml.ws

    Classes in javax.xml.ws that implement Annotation
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `Action` The `Action` annotation allows explicit association of a WS-Addressing `Action` message addressing property with `input`, `output`, and `fault` messages of the mapped WSDL operation.
    `interface` | `BindingType` The `BindingType` annotation is used to specify the binding to use for a web service endpoint implementation class.
    `interface` | `FaultAction` The `FaultAction` annotation is used inside an `Action` annotation to allow an explicit association of a WS-Addressing `Action` message addressing property with the `fault` messages of the WSDL operation mapped from the exception class.
    `interface` | `RequestWrapper` Used to annotate methods in the Service Endpoint Interface with the request wrapper bean to be used at runtime.
    `interface` | `RespectBinding` This feature clarifies the use of the `wsdl:binding` in a JAX-WS runtime.
    `interface` | `ResponseWrapper` Used to annotate methods in the Service Endpoint Interface with the response wrapper bean to be used at runtime.
    `interface` | `ServiceMode` Used to indicate whether a `Provider` implementation wishes to work with entire protocol messages or just with protocol message payloads.
    `interface` | `WebEndpoint` Used to annotate the `getPortName()` methods of a generated service interface.
    `interface` | `WebFault` Used to annotate service specific exception classes to customize to the local and namespace name of the fault element and the name of the fault bean.
    `interface` | `WebServiceClient` Used to annotate a generated service interface.
    `interface` | `WebServiceProvider` Used to annotate a Provider implementation class.
    `interface` | `WebServiceRef` The `WebServiceRef` annotation is used to define a reference to a web service and (optionally) an injection target for it.
    `interface` | `WebServiceRefs` The `WebServiceRefs` annotation allows multiple web service references to be declared at the class level.

  - ### Uses of Annotation in javax.xml.ws.soap

    Classes in javax.xml.ws.soap that implement Annotation
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `Addressing` This annotation represents the use of WS-Addressing with either the SOAP 1.1/HTTP or SOAP 1.2/HTTP binding.
    `interface` | `MTOM` This feature represents the use of MTOM with a web service.

  - ### Uses of Annotation in javax.xml.ws.spi

    Classes in javax.xml.ws.spi that implement Annotation
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `WebServiceFeatureAnnotation` Annotation used to identify other annotations as a `WebServiceFeature`.

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.