我想让我的一个方法“deprecated”=不再使用。

但我仍然希望在我的API中有它。我只是想对使用该方法的人显示“警告”。

我怎样才能做到呢?


你可以做两件事:

将@Deprecated注释添加到方法中 在该方法的javadoc中添加@deprecated标记

你应该两者都做!

引用关于这个主题的java文档:

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


使用@Deprecated on方法。不要忘记澄清javadoc字段:

/**
 * Does some thing in old style.
 *
 * @deprecated use {@link #new()} instead.  
 */
@Deprecated
public void old() {
// ...
}

为您的方法使用@Deprecated注释,您也应该在javadocs中提到它。


看一下@Deprecated注释。


同时使用@Deprecated注释和@Deprecated JavaDoc标记。

@deprecated JavaDoc标记用于文档编制。

@Deprecated注释指示编译器该方法已弃用。以下是在Sun/ oracle文档中关于这个主题的描述:

使用@Deprecated注释来弃用一个类、方法或字段,可以确保所有编译器在代码使用该程序元素时都会发出警告。相比之下,并不能保证所有编译器都会根据@deprecated Javadoc标记发出警告,尽管Sun编译器目前是这样做的。其他编译器可能不会发出这样的警告。因此,使用@Deprecated注释生成警告比依赖@Deprecated Javadoc标记更具可移植性。

你可以在如何和何时弃用api上找到完整的文档


因为缺少一些小的解释

在方法上像这样使用@Deprecated注释

 /**
 * @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) {
}

记住要解释:

为什么不再推荐这种方法。使用时会出现什么问题。如果有的话,提供一个关于该问题的讨论的链接。(记住为了可读性,分隔行<br/> 何时将其移除。(让你的用户知道,如果他们决定坚持使用旧的方法,他们仍然可以在多大程度上依赖这种方法) 提供一个解决方案或链接到您推荐的方法{@link #setPurchasePrice()}