Java中的注释概念

Java中的注释概念,java,annotations,Java,Annotations,引用这句话: 一些开发人员认为Java编译器理解标记和 据此开展工作。这是不对的。这些标签实际上没有任何意义 到Java编译器或运行时本身。有些工具可以 解释这些标签 如果注释中包含的信息只是元数据,那么如果注释错误,为什么代码不会编译?那个特定的注释应该被忽略,对吗 编辑: 只是举个例子。。。Jersey上的一个简单JAX-RS web服务使用如下注释: @Path("mypath") 现在,如果我将此更改为: @Paths("mypath") 或 它不应该阻止我根据上面的链接编译代码…

引用这句话:

一些开发人员认为Java编译器理解标记和 据此开展工作。这是不对的。这些标签实际上没有任何意义 到Java编译器或运行时本身。有些工具可以 解释这些标签

如果注释中包含的信息只是元数据,那么如果注释错误,为什么代码不会编译?那个特定的注释应该被忽略,对吗

编辑:

只是举个例子。。。Jersey上的一个简单JAX-RS web服务使用如下注释:

@Path("mypath")
现在,如果我将此更改为:

@Paths("mypath")


它不应该阻止我根据上面的链接编译代码…

这篇文章至少有一些注释是错误的。就像
@SuppressWarnings
@Override
一样,编译器有非常具体的知识。事实上,文章指出了这一点:

编译器使用元数据执行一些基本的编译时检查。例如,有一个覆盖注释,允许您指定一个方法覆盖超类中的另一个方法

如果“标记实际上对Java编译器没有任何意义”,编译器如何使用它,我不知道


此外,即使对于编译器没有附加任何语义含义的注释,它仍然会验证当您尝试指定特定参数等时,这些参数对于您正在使用的注释是否具有合理的名称和类型。

这篇文章至少对某些注释是错误的。就像
@SuppressWarnings
@Override
一样,编译器有非常具体的知识。事实上,文章指出了这一点:

编译器使用元数据执行一些基本的编译时检查。例如,有一个覆盖注释,允许您指定一个方法覆盖超类中的另一个方法

如果“标记实际上对Java编译器没有任何意义”,编译器如何使用它,我不知道


此外,即使对于编译器没有附加任何语义含义的注释,它仍然会验证当您尝试指定特定参数等时,这些参数对于您正在使用的注释具有合理的名称和类型。

注释基本上是一种特殊形式的接口,因此,编译器必须能够加载注释定义,以便对信息进行编码,以便将其包含在类文件中。一旦它在类文件中,类加载器将作为类的一部分加载它,以便注释处理工具可以访问信息。编译器将验证是否只使用定义的参数,以及为未指定的属性(并定义了默认值)提供默认值。

注释基本上是一种特殊形式的接口,因此,编译器必须能够加载注释定义,以便对信息进行编码,以便将其包含在类文件中。一旦它在类文件中,类加载器将作为类的一部分加载它,以便注释处理工具可以访问信息。编译器将验证是否只使用定义的参数,并为未指定(且已定义默认值)的属性提供默认值。

您错误地注释了什么?您可以提供任何示例吗?可能就像当编译器看到@sign for annotation时,它只是忽略它,期望其他工具对其进行处理。它确保您正在使用的注释已定义。您错误地注释了什么?您可以提供任何示例吗?可能就像编译器看到@sign for annotation时,它只是忽略它,希望其他工具能够处理它。它确保您正在使用的注释已定义。
@Path(123)