如何将Java方法声明或标记为已弃用?
我想让我的一个方法“弃用”=不再使用 但我仍然希望在API中包含它。我只想向任何使用这种方法的人发出“警告”如何将Java方法声明或标记为已弃用?,java,deprecated,Java,Deprecated,我想让我的一个方法“弃用”=不再使用 但我仍然希望在API中包含它。我只想向任何使用这种方法的人发出“警告” 我如何才能做到这一点?您可以做两件事: 将注释添加到方法中,然后 向方法的javadoc添加一个标记 你应该同时做这两件事 引述有关这个问题的最新资料: 从J2SE 5.0开始,您可以使用@Deprecated注释来弃用类、方法或字段。此外,您还可以使用@deprecated Javadoc标记来告诉开发人员应该使用什么 使用注释会导致Java编译器在使用不推荐使用的类、方法或字段时生成
我如何才能做到这一点?您可以做两件事:
/**
* Does some thing in old style.
*
* @deprecated use {@link #new()} instead.
*/
@Deprecated
public void old() {
// ...
}
对您的方法使用
@Deprecated
,您还应该在JavaDoc中提到它。查看@Deprecated
注释。同时使用@Deprecated
注释和@Deprecated
JavaDoc标记
不推荐使用的@JavaDoc标记用于文档目的
@Deprecated
注释指示编译器该方法已弃用。以下是Sun/Oracles文档中关于该主题的内容:
使用@Deprecated
注释弃用类、方法或字段可确保所有编译器在代码使用该程序元素时发出警告。相反,不能保证所有编译器都会根据@deprecated
Javadoc标记发出警告,尽管Sun编译器目前是这样做的。其他编译器可能不会发出此类警告。因此,使用@Deprecated
注释生成警告比依赖@Deprecated
Javadoc标记更便于移植
您可以在找到完整的文档,因为缺少一些小的解释
对这样的方法使用@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) {
}
/**
*@param基准价格
*
*@deprecated reason此方法已弃用
*{将在下一版本中删除}
*使用{@link#setPurchasePrice()}替换如下:
*
*
*
*getProduct().setPurchasePrice(200)
*
*
*/
@不赞成
公共价格(国际基准价){
}
记住要解释:
为什么不再推荐此方法。使用时会出现什么问题。如果有,请提供该问题讨论的链接。(为了可读性,请记住分隔行
何时将其删除(让您的用户知道,如果他们决定坚持旧方法,他们仍然可以在多大程度上依赖此方法)
提供解决方案或链接到您推荐的方法
{@link#setPurchasePrice()}
@Deprecrated不是你的选择吗?是的,但我不知道…这就是为什么我要问这个问题:)看评论不是答案的地方!不完全正确。javadoc和注释告诉编译器方法都是deprecated@Bohemian事实并非如此。注释是在Java语言规范第9.6.1.6()节中定义的,而javadoc标记不是。因此注释是语言的一部分。如果您决定编写自己的Java编译器,可以忽略javadoc标记,但必须识别注释。@ShaMan-H\u Fel我相信javadoc模型也可以工作。因为在Java5之前,它是唯一的选择,而且确实有效。当您使用
@deprecated
javadoc标记(在Java 4-)标记一个方法时,编译器将该方法(类、字段)标记为deprecated,即使没有可用的源代码,IDE也会显示警告。如何链接外部库?例如:com.hello.api.PublicController#new@LinuxLars完全同意!Java 9添加了两个属性以开始认真对待弃用,但是添加另一个默认值为“的属性reason
”
不会有任何影响。我希望注释中的@deprecated
消息可以添加到@deprecated
(一个点来修复它们)…链接现在断开了不是应该是而不是
?@argh1969,对吧!不记得我从哪里得到的模板了。但我可以确认两个版本都有效。尽管我在编辑时支持标准。