如何将Java方法声明或标记为已弃用?

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

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

我怎样才能做到呢?

196889 次浏览

你可以做两件事:

  1. @Deprecated注释添加到方法中,和
  2. 在该方法的javadoc中添加@deprecated标记

你应该做两个!

引用这个主题的java文档:

从J2SE 5.0开始,可以使用@Deprecated注释来弃用类、方法或字段。此外,您可以使用@deprecated Javadoc标记告诉开发人员应该使用什么。

使用注释会导致Java编译器在使用废弃的类、方法或字段时生成警告。如果已弃用的编译单元使用了已弃用的类、方法或字段,编译器将抑制已弃用警告。这使您能够在不生成警告的情况下构建遗留api。

强烈建议使用Javadoc @deprecated标记,并附上解释如何使用新API的适当注释。这确保了开发人员有一条从旧API到新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) {
}

记住要解释:

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