## Uses of Class
java.lang.annotation.Retention

- Packages that use Retention
  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.
  javax.annotation.processing | Facilities for declaring annotation processors and for allowing annotation processors to communicate with an annotation processing tool environment.
  javax.management | Provides the core classes for the Java Management Extensions.
  javax.swing | Provides a set of "lightweight" (all-Java language) components that, to the maximum degree possible, work the same on all platforms.
  jdk.jfr | This package provides classes to create events and control Flight Recorder.

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

    Classes in java.beans with annotations of type Retention
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `BeanProperty` | An annotation used to specify some property-related information for the automatically generated `BeanInfo` classes.
    `interface` | `ConstructorProperties` | An annotation on a constructor that shows how the parameters of that constructor correspond to the constructed object's getter methods.
    `interface` | `JavaBean` | An annotation used to specify some class-related information for the automatically generated `BeanInfo` classes.
    `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 Retention in java.lang

    Classes in java.lang with annotations of type Retention
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `Deprecated` | A program element annotated `@Deprecated` is one that programmers are discouraged from using.
    `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).

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

    Classes in java.lang.annotation with annotations of type Retention
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `Documented` | If the annotation `@Documented` is present on the declaration of an annotation type A, then any `@A` annotation on an element is considered part of the element's public contract.
    `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.

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

    Classes in javax.annotation.processing with annotations of type Retention
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `Generated` | The Generated annotation is used to mark source code that has been generated.
    `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.

  - ### Uses of Retention in javax.management

    Classes in javax.management with annotations of type Retention
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `ConstructorParameters` | An annotation on a constructor that shows how the parameters of that constructor correspond to the constructed object's getter methods.
    `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 Retention in javax.swing

    Classes in javax.swing with annotations of type Retention
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `SwingContainer` | An annotation used to specify some swing-related information for the automatically generated `BeanInfo` classes.

  - ### Uses of Retention in jdk.jfr

    Classes in jdk.jfr with annotations of type Retention
    Modifier and Type | Class | Description
    --- | --- | ---
    `interface` | `BooleanFlag` | Event field annotation, specifies that the value is a boolean flag, a `true` or `false` value
    `interface` | `Category` | Event annotation, to associate the event type with a category, in the format of a human-readable path.
    `interface` | `ContentType` | Meta annotation, specifies that an annotation represents a content type, such as a time span or a frequency.
    `interface` | `DataAmount` | Event field annotation, specifies that a value represents an amount of data (for example, bytes).
    `interface` | `Description` | Annotation that describes an element by using a sentence or two.
    `interface` | `Enabled` | Event annotation, determines if an event should be enabled by default.
    `interface` | `Experimental` | Annotation that specifies that an element is experimental and may change without notice.
    `interface` | `Frequency` | Event field annotation, specifies that the value is a frequency, measured in Hz.
    `interface` | `Label` | Annotation that sets a human-readable name for an element (for example, `"Maximum Throughput"`).
    `interface` | `MemoryAddress` | Event field annotation, specifies that the value is a memory address.
    `interface` | `MetadataDefinition` | Meta annotation for defining new types of event metadata.
    `interface` | `Name` | Annotation that overrides the default name for an element (for example, when the default package for an event is not appropriate).
    `interface` | `Percentage` | Event field annotation to use on fractions, typically between `0.0` and `1.0`, to specify that the value is a percentage.
    `interface` | `Period` | Event annotation, specifies the default setting value for a periodic event.
    `interface` | `Registered` | Event annotation, for programmatic event registration.
    `interface` | `Relational` | Meta annotation for relational annotations, to be used on an annotation.
    `interface` | `SettingDefinition` | Annotation that specifies that a method in an event class should be used to filter out events.
    `interface` | `StackTrace` | Event annotation, determines whether an event by default has a stack trace or not.
    `interface` | `Threshold` | Event annotation, specifies the default duration below which an event is not recorded (for example, `"20 ms"`).
    `interface` | `Timespan` | Event field annotation, specifies that the value is a duration.
    `interface` | `Timestamp` | Event field annotation, specifies that the value is a point in time.
    `interface` | `TransitionFrom` | Event field annotation, specifies that the event transitioned from a thread.
    `interface` | `TransitionTo` | Event field annotation, specifies that the event will soon transition to a thread.
    `interface` | `Unsigned` | Event field annotation, specifies that the value is of an unsigned data type.