Java Annotations

2022-08-31 09:02:44

Java中注解的目的是什么?我对它们有一个模糊的想法,它们介于注释和实际代码之间。它们在运行时是否影响程序?

它们的典型用法是什么?

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


答案 1

批注主要由检查其他代码的代码使用。它们通常用于在运行时修改(即修饰或包装)现有类以更改其行为。JUnitHibernate等框架使用注释来最大限度地减少使用框架所需的代码量。

Oracle在他们的网站上很好地解释了这个概念及其在Java中的含义


答案 2

另外,它们是Java独有的,是否有C++等价物?

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

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

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

/EDIT:类上的属性与标记接口相当(如Java中的可序列化)。但是,.NET 编码指南规定不要使用标记接口。此外,它们只在类级别工作,而不是在方法级别工作。


推荐