Module java.base
Package java.lang

## Annotation Type Deprecated

-     @Documented
      @Retention(RUNTIME)
      @Target({CONSTRUCTOR,FIELD,LOCAL_VARIABLE,METHOD,PACKAGE,MODULE,PARAMETER,TYPE})
      public @interface Deprecated

  A program element annotated `@Deprecated` is one that programmers are discouraged from using. An element may be deprecated for any of several reasons, for example, its usage is likely to lead to errors; it may be changed incompatibly or removed in a future version; it has been superseded by a newer, usually preferable alternative; or it is obsolete.

  Compilers issue warnings when a deprecated program element is used or overridden in non-deprecated code. Use of the `@Deprecated` annotation on a local variable declaration or on a parameter declaration or a package declaration has no effect on the warnings issued by a compiler.

  When a module is deprecated, the use of that module in `requires`, but not in `exports` or `opens` clauses causes a warning to be issued. A module being deprecated does not cause warnings to be issued for uses of types within the module.

  This annotation type has a string-valued element `since`. The value of this element indicates the version in which the annotated program element was first deprecated.

  This annotation type has a boolean-valued element `forRemoval`. A value of `true` indicates intent to remove the annotated program element in a future version. A value of `false` indicates that use of the annotated program element is discouraged, but at the time the program element was annotated, there was no specific intent to remove it.

  API Note:
    It is strongly recommended that the reason for deprecating a program element be explained in the documentation, using the `@deprecated` javadoc tag. The documentation should also suggest and link to a recommended replacement API, if applicable. A replacement API often has subtly different semantics, so such issues should be discussed as well.

    It is recommended that a `since` value be provided with all newly annotated program elements. Note that `since` cannot be mandatory, as there are many existing annotations that lack this element value.

    There is no defined order among annotation elements. As a matter of style, the `since` element should be placed first.

    The `@Deprecated` annotation should always be present if the `@deprecated` javadoc tag is present, and vice-versa.

  Since:
    1.5
  See The Java™ Language Specification:
    9.6.4.6 @Deprecated

- - ### Optional Element Summary

    Optional Elements
    Modifier and Type | Optional Element | Description
    --- | --- | ---
    `boolean` | `forRemoval` | Indicates whether the annotated element is subject to removal in a future version.
    `String` | `since` | Returns the version in which the annotated element became deprecated.

- - ### Element Detail

    - #### since

          String since

      Returns the version in which the annotated element became deprecated. The version string is in the same format and namespace as the value of the `@since` javadoc tag. The default value is the empty string.
      Returns:
        the version string
      Since:
        9
      Default:
        ""

  - - #### forRemoval

          boolean forRemoval

      Indicates whether the annotated element is subject to removal in a future version. The default value is `false`.
      Returns:
        whether the element is subject to removal
      Since:
        9
      Default:
        false