java:调用接口类型意味着什么?
我正在阅读java语言规范(JLS): 注释表示注释类型的特定调用 (§9.6) 在9.6中: 注释类型声明指定新的注释类型,即 特殊类型的接口类型java:调用接口类型意味着什么?,java,jls,Java,Jls,我正在阅读java语言规范(JLS): 注释表示注释类型的特定调用 (§9.6) 在9.6中: 注释类型声明指定新的注释类型,即 特殊类型的接口类型 因此,例如@annotation1应该调用注释类型annotation1。我在这里找不到关于网络搜索或问题的信息。我所发现的只是接口方法的调用,而不是接口类型。我读过一些内置注释的原因,例如臭名昭著的@Override,然而,我希望通过JLS的链接清楚地了解什么是接口类型调用,因为我已经阅读了许多有用的框架都使用了注释,我希望有效地使用这些注释。如
因此,例如
@annotation1
应该调用注释类型annotation1
。我在这里找不到关于网络搜索或问题的信息。我所发现的只是接口方法的调用,而不是接口类型。我读过一些内置注释的原因,例如臭名昭著的@Override
,然而,我希望通过JLS的链接清楚地了解什么是接口类型调用,因为我已经阅读了许多有用的框架都使用了注释,我希望有效地使用这些注释。如果您编写@SomeAnnotation
您基本上是在该注释类型的实例中创建的(可能有一些缓存,但我不知道这一点). 当注释包含数据时,这一点尤其明显,例如@SomeAnnotation(name=“Alexei”)
。在这种情况下,您可以获取类型为SomeAnnotation
的注释实例,然后对其调用name()
,以获取值“Alexei”
)
我读过很多有用的框架都使用注释,我想有效地使用它们
大多数框架使用反射检查类并收集注释信息,例如通过Class.getAnnotation(SomeAnnotation.Class)
和许多其他类似方法。然后,这些信息被用于框架需要它们做的任何事情,例如,CDI将使用范围注释来构建其内部bean存储库
要使用这些框架,您不必知道它们如何使用注释的细节或调用的实际含义。只需按照框架的要求使用注释本身
如果您想开发自己的框架,那么您可能需要更多的信息,特别是关于反射功能的信息。据我对您发布的链接JL的理解,注释类型是特殊的接口类型,您不应该认为在该上下文中的调用意味着与方法相同的调用。编译器插入带有代码的标记,它们可以在以后使用(或在编译期间使用
@override
) JLS是一个完整的技术规范。它的大部分内容并不是集中在学习上,而是集中在一个完整的描述上。我建议从这开始。