Deprecated (Java SE 26 & JDK 26)
Description: declaration: module: java.base, package: java.lang, annotation type: Deprecated
Keywords: java.lang.Deprecated class

# Annotation Interface 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.

See Java Language Specification:
  9.6.4.6 @Deprecated
Since:
  1.5

- ## 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 Details

  - ### 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`