@deprecated vs @Deprecated

时间:2013-12-19 05:33:02

标签: java deprecated

我可以弃用函数或类@Deprecated注释。但XML注释中的@deprecated条目本身将类/函数标记为已弃用。 @deprecated是否实际上不推荐使用类/函数?

2 个答案:

答案 0 :(得分:74)

@Deprecated是一个由编译器读取的注释,用于将方法标记为编译器弃用,如果使用该方法,将生成弃用编译时警告。

@deprecated是一个javadoc标记,用于提供有关弃用的文档。您可以使用它来解释该方法被弃用的原因并建议替代方法。将此标记与@Deprecated注释结合使用才有意义。

使用示例:

/**
 * This method does ...
 * @deprecated As of <product> <version>, because ... use
 *             {@link #replacementMethod()} instead.
 */
@Deprecated
public void deprecatedMethod() {
    // ...
}

以下是guide on deprecation,请查看以获取更多信息。


要更具体地回答您的问题,您应该使用@Deprecated或两者都使用,因为在将这些信息从编译器中删除时,您希望将此信息限制在文档中是没有意义的。 @Deprecated将您的方法标记为任何关注它的工具(例如IDE),因为它在运行时和编译时可用。此外,即使您没有使用@Deprecated添加有关弃用的任何信息,javadoc工具也会注意到@deprecated

仅仅将您的方法记录为已弃用而不是注释它们意味着用户必须手动搜索用法,而不是使用编译器或他们自己的工具等工具。

答案 1 :(得分:17)

@deprecated Javadoc Tag: 您可以使用@deprecated标记使Javadoc将程序元素显示为已弃用。 @deprecated标记后面必须跟一个空格或换行符。

<强> @Deprecated 使用@Deprecated批注来弃用类,方法或字段可确保所有编译器在代码使用该程序元素时发出警告。相反,无法保证所有编译器始终根据@deprecated Javadoc标记发出警告

参考here