Java注释

Java注释

Java Annotations

Java中注释的目的是什么? 我对它们的理解很模糊,介于注释和实际代码之间。 它们在运行时会影响程序吗?

它们的典型用法是什么?

它们是Java独有的吗? 是否有等效的C ++?


批注主要由正在检查其他代码的代码使用。它们通常用于在运行时修改(即修饰或包装)现有的类以更改其行为。诸如JUnit和Hibernate之类的框架使用批注来最大程度地减少使用框架编写所需的代码量。

Oracle在其站点上用Java很好地解释了该概念及其含义。


Also, are they unique to Java, is there a C++ equivalent?

不,但是VB和C#具有相同的属性。

它们的用法是多种多样的。一个典型的Java示例@Override对代码没有影响,但是如果修饰的方法实际上没有覆盖另一个方法,则编译器可以使用它生成警告(或错误)。同样,方法可以标记为过时。

然后有反思。当您在代码中反映类的类型时,可以访问属性并根据那里的信息进行操作。我不知道Java中的任何示例,但是在.NET中,编译器使用它来生成类的(反序列化)信息,确定结构的内存布局并声明从旧版库(以及其他库)中导入的函数。它们还控制IDE表单设计器的工作方式。

/ EDIT:类上的属性与标记接口(如Java中的Serializable)相当。但是,.NET编码指南说不要使用标签接口。而且,它们仅在类级别上起作用,而不在方法级别上起作用。


Anders给出了很好的总结,这是一个JUnit注释的示例

1
2
3
4
@Test(expected=IOException.class)
public void flatfileMissing() throws IOException {
    readFlatFile("testfiles"+separator+"flatfile_doesnotexist.dat");
}

这里的@Test注释告诉JUnit flatfileMissing方法是应该执行的测试,预期结果是抛出的IOException。因此,在运行测试时,将调用此方法,并且根据是否抛出IOException,测试将通过还是失败。


Java还具有注释处理工具(apt),您不仅可以在其中创建注释,还可以决定这些注释如何在源代码上工作。

这里是介绍。


要查看您可以使用Annotations做的一些有趣的事情,请查看我的JavaBean注释和注释处理器。

它们非常适合生成代码,在构建过程中添加额外的验证,而且我还一直在将它们用于错误消息框架(尚未发布-需要与老板联系...)。


关于EJB的注释被称为选择隐式中间件方法,而不是显式中间件方法,当您使用注释时,您正在从API定制您真正需要的东西
例如,您需要调用银行转帐的交易方法:
不使用注释:
该代码将是

1
2
3
4
5
6
7
8
9
transfer(Account account1, Account account2, long amount)    
{
   // 1: Call middleware API to perform a security check
   // 2: Call middleware API to start a transaction
   // 3: Call middleware API to load rows from the database
   // 4: Subtract the balance from one account, add to the other
   // 5: Call middleware API to store rows in the database
   // 6: Call middleware API to end the transaction
}

在使用注释时,您的代码不包含使用中间的,
产品服务。该代码是干净的,专注于业务逻辑

1
2
3
4
transfer(Account account1, Account account2, long amount)
{
   // 1: Subtract the balance from one account, add to the other
}


什么时候使用Javas @Override注释,为什么?
该链接指向有关何时应使用替代标注(@override)的问题。
这可能有助于更好地理解注释的概念。


通过文字定义,注释可以为元素添加注释。同样,Java注释是我们插入源代码中的标签,用于提供有关代码的更多信息。 Java注释将信息与带注释的程序元素相关联。除了Java注释外,Java程序还有大量的非正式文档,这些文档通常包含在源代码文件的注释中。但是,Java注释与注释不同,它们使用注释类型直接描述程序的形式来注释程序元素。 Java注释以标准和结构化的方式显示信息,以便处理工具可以方便地使用它。

要详细阅读,有一个关于Java注释的不错的教程。


推荐阅读