2013-12-19 30 views
21

我可以弃用一个函数或class @Deprecated注解。但是,XML注释中的@deprecated条目本身将该类/函数标记为已弃用。 @deprecated实际上是否使类/函数不被使用?@deprecated vs @Deprecated

+0

你的意思是Javadoc的评论?你在问什么XML评论? –

+0

@ElliottFrisch,是的。我是C#开发人员,我以我的观点说过。 Javadoc是Java中的术语。 –

+0

@波希米亚,请阅读您标记为原创的问题的答案。他们都强制只使用@@弃用或两者都使用。不仅@@已弃用 –

回答

46

@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

“弃用指南”链接不是更活跃。我建议你修复它。谢谢 – gersonZaragocin

+0

@gersonZaragocin谢谢你,我更新了链接。 :) –

+0

你可以说链接是...弃用! :D 无论如何,有谁知道Eclipse为什么会触及并用红色标记'@ deprecated'方法的调用,但不是'@ Deprecated'方法的调用?我会期待它相反或标记为两个。它也没有告诉我使用任何一个,但这可能是因为我的设置。 – Fabian

14

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

@Deprecated 使用@Deprecated注释弃用一个类,方法或字段确保当代码使用该程序元件所有的编译器将发出警告。与此相反,也不能保证,基于@deprecated Javadoc标记所有的编译器会一直发出警告

参考here

+0

感谢您提供文档链接! –

+0

好的答案Nambi :) –

相关问题