我正在阅读java语言规范(JLS):注解
注释表示对注释类型的特定调用(§9.6)
在9.6中:
注释类型声明指定了一种新的注释类型,一种特殊的接口类型。
因此,例如,@annotation1应该调用注释类型annotation1。我找不到信息,它意味着什么,通过网络搜索或问题在这里。我发现的只是接口方法的调用,而不是接口类型的调用。我已经阅读了一些内置注释所做的事情,例如臭名昭著的@Override,但是我想要清晰的知识--最好有指向JLS的链接--接口类型调用是什么,因为我已经阅读过注释被我想要高效使用的许多有用的框架所使用。
发布于 2019-08-27 15:40:00
如果编写@SomeAnnotation,您基本上创建了该注释类型的实例(可能有一些缓存,但我不知道这一点)。当注释有数据(例如@SomeAnnotation(name="Alexei") )时,这一点就变得尤为明显。在这种情况下,您可以获得SomeAnnotation类型的注释实例,然后在其上调用name()以获得值"Alexei")。
我读过注释被许多有用的框架所使用,我想要高效地使用这些框架。
大多数框架使用反射来检查类并收集注释信息,例如通过Class.getAnnotation(SomeAnnotation.class)和其他许多类似的方法。然后,该信息将用于执行框架所需的任何操作,例如,CDI将使用范围注释来构建其内部bean存储库。
要使用这些框架,您不必知道它们是如何使用注释的,或者调用实际上意味着什么。只需按照框架要求您做的那样使用注释本身。
如果您想要开发自己的框架,那么您可能需要更多的信息,特别是关于反射功能的信息。
发布于 2019-08-27 15:56:07
据我对您发布的链接jls的理解,注释类型是特殊的接口类型,不应该认为在该上下文中的调用意味着与方法相同的调用。编译器在代码中插入标记,它们可以在以后使用(或者在编译过程中使用,就像在@override中那样)。
https://stackoverflow.com/questions/57678003
复制相似问题