How to declare or mark a Java method as deprecated?
JavaDeprecatedJava Problem Overview
I would like to make one of my methods "deprecated" = not used anymore.
But still I would like to have it in my API. I just want to show "warning" to anyone using that method.
How can I achieve that?
Java Solutions
Solution 1 - Java
Use @Deprecated
on method. Don't forget about clarifying javadoc field:
/**
* Does some thing in old style.
*
* @deprecated use {@link #new()} instead.
*/
@Deprecated
public void old() {
// ...
}
Solution 2 - Java
Use both @Deprecated
annotation and the @deprecated
JavaDoc tag.
The @deprecated
JavaDoc tag is used for documentation purposes.
The @Deprecated
annotation instructs the compiler that the method is deprecated. Here is what it says in Sun/Oracles document on the subject:
> Using the @Deprecated
annotation to deprecate a class, method, or field ensures that all compilers will issue warnings when code uses that program element. In contrast, there is no guarantee that all compilers will always issue warnings based on the @deprecated
Javadoc tag, though the Sun compilers currently do so. Other compilers may not issue such warnings. Thus, using the @Deprecated
annotation to generate warnings is more portable that relying on the @deprecated
Javadoc tag.
You can find the full document at How and When to Deprecate APIs
Solution 3 - Java
since some minor explanations were missing
Use @Deprecated
annotation on the method like this
/**
* @param basePrice
*
* @deprecated reason this method is deprecated <br/>
* {will be removed in next version} <br/>
* use {@link #setPurchasePrice()} instead like this:
*
*
* <blockquote><pre>
* getProduct().setPurchasePrice(200)
* </pre></blockquote>
*
*/
@Deprecated
public void setBaseprice(int basePrice) {
}
#remember to explain:#
- Why is this method no longer recommended. What problems arise when using it. Provide a link to the discussion on the matter if any. (remember to separate lines for readability
<br/>
- When it will be removed. (let your users know how much they can still rely on this method if they decide to stick to the old way)
- Provide a solution or link to the method you recommend
{@link #setPurchasePrice()}
Solution 4 - Java
There are two things you can do:
- Add the
@Deprecated
annotation to the method, and - Add a
@deprecated
tag to the javadoc of the method
You should do both!
Quoting the java documentation on this subject:
>Starting with J2SE 5.0, you deprecate a class, method, or field by using the @Deprecated annotation. Additionally, you can use the @deprecated Javadoc tag tell developers what to use instead.
>
>Using the annotation causes the Java compiler to generate warnings when the deprecated class, method, or field is used. The compiler suppresses deprecation warnings if a deprecated compilation unit uses a deprecated class, method, or field. This enables you to build legacy APIs without generating warnings.
>
>You are strongly recommended to use the Javadoc @deprecated tag with appropriate comments explaining how to use the new API. This ensures developers will have a workable migration path from the old API to the new API
Solution 5 - Java
Use the annotation @Deprecated
for your method, and you should also mention it in your javadocs.
Solution 6 - Java
Take a look at the @Deprecated
annotation.