注释主要是关于记录代码还是由编译器强制执行?

时间:2009-04-20 01:08:10

标签: java annotations

@Deprecated public class Betamax { ... }

在上面的例子中,@ Deprecated有什么影响?这纯粹是文件吗?或者它是否会改变编译器如何处理这个类?

2 个答案:

答案 0 :(得分:2)

编译器强制执行(如检查和修改)某些注释(如@Override)。

但最有用的部分是库可以提供自己的注释(如@Entity@PersistenceAware),其中Java语言(JDK核心)不知道任何内容。这有点像在语言中添加特定于域的语法糖。

@Deprecated用于提供文档。当您使用不推荐使用的方法(或类)时,它也会创建编译器警告,就像旧的JavaDoc @deprecated标记一样。

答案 1 :(得分:1)

纯粹出于文档目的。

如果您将某些内容标记为已弃用,则通过生成的Javadoc向用户指明不应使用此方法/类,例如

  

日期(int year,int month,int date):   已过时。从JDK 1.1版开始,   由Calendar.set取代(年份+ 1900,   月,日)或GregorianCalendar(年   + 1900,月,日)。

如果您将某些内容标记为已弃用,则最好向用户指明应使用哪种方法代替此方法。