java:调用接口类型是什么意思?

时间:2019-08-27 15:28:32

标签: java jls

我正在阅读Java语言规范(JLS):annotations

  

注释表示注释类型的特定调用   (§9.6)

在9.6中:

  

注释类型声明指定了新的注释类型,即   一种特殊的接口类型。

例如@annotation1应该调用注释类型annotation1。我找不到信息,这是网页搜索或此处的问题的意思。我发现的所有内容仅涉及接口的方法的调用,而不涉及接口类型的调用。我已经阅读了一些内置注释的原因,例如臭名昭著的@Override,但是我希望通过JLS链接获得清晰的知识,因为我已经阅读了许多我想有效使用的有用框架所使用的注释,因此接口类型调用是什么。

2 个答案:

答案 0 :(得分:2)

如果您编写@SomeAnnotation,则基本上是在该注释类型的实例中创建的(可能会有一些缓存,但我不知道这一点)。当注释具有数据时,例如,这尤其明显。 @SomeAnnotation(name="Alexei")。在这种情况下,您可以获取类型为SomeAnnotation的注释实例,然后对其调用name()以获取值"Alexei")。

  

我已经阅读了许多要有效使用的有用框架的注释。

大多数框架都使用反射来检查您的类并收集有关注释的信息,例如通过Class.getAnnotation(SomeAnnotation.class)和许多其他类似方法。然后,该信息将用于框架需要执行的任何操作,例如CDI将使用范围注释来构建其内部bean存储库。

要使用这些框架,您不必了解它们如何使用注释或调用实际上意味着什么的细节。只需使用注释本身,因为框架需要您这样做。

如果要开发自己的框架,然后,则可能需要更多信息,尤其是有关反射功能的信息。

答案 1 :(得分:1)

据我对您发布的链接的了解,注释类型是特殊接口类型,在这种情况下,不应认为 invocation 表示与上述相同的调用一种方法。编译器会插入带有代码的标记,以后可以使用它们(或像@override一样在编译过程中使用它们)。