题
Java中注释的目的是什么?我对它们的模糊理解是介于注释和实际代码之间。它们在运行时会影响程序吗?
它们的典型用途是什么?
它们是 Java 独有的吗?有 C++ 等价的吗?
解决方案
注释主要由检查其他代码的代码使用。它们通常用于修改(即在运行时装饰或包装)现有类以更改其行为。框架如 联合单元 和 休眠 使用注释可以最大限度地减少使用框架所需编写的代码量。
甲骨文有 对这个概念及其在 Java 中的含义的很好的解释 在他们的网站上。
其他提示
另外,它们是 Java 独有的吗?C++ 是否有等效的?
没有,但是 VB 和 C# 有 属性 这是同一件事。
它们的用途非常多样化。一个典型的 Java 例子, @Override
对代码没有影响,但如果修饰方法实际上没有覆盖另一个方法,编译器可以使用它来生成警告(或错误)。同样,方法也可以被标记为过时。
然后就是反思。当您在代码中反映类的类型时,您可以访问属性并根据在那里找到的信息进行操作。我不知道 Java 中的任何示例,但在 .NET 中,编译器使用它来生成 (反)序列化 类的信息,确定 内存布局 的结构和 声明函数导入 来自遗留库(等等)。它们还控制 IDE 表单设计器的工作方式。
/编辑:类上的属性与标签接口相当(例如 可串行化 在爪哇)。然而,.NET 编码指南规定不要使用标签接口。此外,它们仅适用于类级别,而不适用于方法级别。
Anders 给出了很好的总结,下面是 JUnit 注释的示例
@Test(expected=IOException.class)
public void flatfileMissing() throws IOException {
readFlatFile("testfiles"+separator+"flatfile_doesnotexist.dat");
}
这里的 @Test
注释告诉 JUnit flatfileMissing
方法是一个应该执行的测试,并且预期结果是抛出的 IOException
. 。因此,当您运行测试时,将调用此方法,并且测试将根据是否通过 IOException
被抛出。
Java 还具有注释处理工具 (apt),您不仅可以在其中创建注释,还可以决定这些注释如何在源代码上工作。
这里 是一个介绍。
要查看可以使用注释做的一些很酷的事情,请查看 我的 JavaBean 注释和注释处理器.
它们非常适合生成代码,在构建过程中添加额外的验证,而且我也一直将它们用于错误消息框架(尚未发布 - 需要与老板澄清......)。
根据字面定义,注释向元素添加注释。同样,Java 注释是我们插入源代码中的标签,用于提供有关代码的更多信息。Java 注释将信息与注释的程序元素相关联。除了 Java 注释之外,Java 程序还有大量的非正式文档,这些文档通常包含在源代码文件的注释中。但是,Java注释与注释不同,Java注释直接使用注释类型来描述注释的形式来注释程序元素。Java 注释以标准和结构化的方式呈现信息,以便处理工具可以轻松地使用它。
要详细阅读,有一个很好的教程 Java注解
什么时候使用 Java 的 @Override 注解?为什么?该链接引用了一个关于何时应该使用覆盖注释(@override)的问题。这可能有助于更好地理解注释的概念。查看。
注释在EJB方面被称为选择隐式中间软件方法,而不是明确的中间软件方法,当您使用注释时,您可以自定义API确切需要的内容:不使用注释:代码将是
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
}
在使用注释时,您的代码不包含使用中间件服务的繁琐的API调用。代码干净并且专注于业务逻辑
transfer(Account account1, Account account2, long amount)
{
// 1: Subtract the balance from one account, add to the other
}
注释, ,一种元数据形式,提供有关程序的数据,但该数据不属于程序本身。注解对其所注解的代码的操作没有直接影响。
注释有多种用途,其中:
- 编译器信息 — 编译器可以使用注释来检测错误或抑制警告。
- 编译时和部署时处理 — 软件工具可以处理注释信息以生成代码、XML 文件等。
- 运行时处理 — 一些注释可在运行时检查。
可见范围定义为 java.lang.annotation.RetentionPolicy
常量 SOURCE
, CLASS
, , 和 RUNTIME