模块 java.compiler

接口 AnnotationValueVisitor<R,P>

类型参数:
R - 此访问者方法的返回类型
P - 此访问者方法的附加参数的类型。
所有已知的实现类:
AbstractAnnotationValueVisitor14 , AbstractAnnotationValueVisitor6 , AbstractAnnotationValueVisitor7 , AbstractAnnotationValueVisitor8 , AbstractAnnotationValueVisitor9 , SimpleAnnotationValueVisitor14 , SimpleAnnotationValueVisitor6 , SimpleAnnotationValueVisitor7 , SimpleAnnotationValueVisitor8 , SimpleAnnotationValueVisitor9

public interface AnnotationValueVisitor<R,P>
注释界面元素值的访问者,使用访问者设计模式的变体。与基于类型层次结构成员的具体类型进行调度的标准访问者不同,此访问者基于存储的数据类型进行调度;没有用于存储的不同子类,例如,boolean 值与 int 值。当值的类型在编译时未知时,实现此接口的类用于对该值进行操作。当访问者传递给值的 accept 方法时,将调用适用于该值的 visitXyz 方法。

如果附加参数 pnull ,则实现此接口的类可能会或可能不会抛出 NullPointerException ;有关详细信息,请参阅实现类的文档。

API 注意:
WARNING: 可能会向此接口添加方法,以适应添加到 Java 编程语言未来版本中的新的、当前未知的语言结构。此类添加已经出现在该包中的另一个访问者界面中,以支持引入此 API 后添加的语言功能。直接实现此接口的访问者类可能与平台的未来版本不兼容。为避免这种源不兼容,鼓励访问者实现改为扩展实现此接口的适当抽象访问者类。但是,API 通常应该使用此访问者接口作为参数类型、返回类型等,而不是抽象类之一。

适应新语言结构的方法有望作为默认方法添加,以提供强大的源兼容性,就像 ElementVisitor 中的 visitModule 所做的那样。此接口中默认方法的实现将依次调用 visitUnknown ,该行为将在支持具有新语言构造的源版本的具体访问者中被覆盖。

工具包 中有几个实现此访问者接口的类家族。这些系列遵循 FooVisitor 的命名模式N在哪里N表示访问者适合的 源版本。特别是 FooVisitorN预计将处理源版本中存在的所有语言结构N.如果版本中没有添加新的语言结构N+ 1(或后续版本), FooVisitorN也可以处理后来的源版本;在这种情况下, FooVisitor 上的 SupportedSourceVersion 注释N类将指示更高版本。当访问代表引入的语言构造的注解值时after源版本N一个 FooVisitorN将抛出 UnknownAnnotationValueException 除非该行为被覆盖。

在选择访问者家族的哪个成员进行子类化时,对最近的成员进行子类化会增加所涵盖的源版本的范围。在选择要子类化的访问者家族时,请考虑它们的内置功能:

自从:
1.6
  • 方法详情

    • visit

      R  visit(AnnotationValue  av, P  p)
      访问注解值。
      参数:
      av - 访问的值
      p - 访问者指定的参数
      返回:
      访问者指定的结果
    • visit

      default R  visit(AnnotationValue  av)
      相当于 visit(av, null) 的便捷方法。
      实现要求:
      默认实现是 visit(av, null)
      参数:
      av - 访问的值
      返回:
      访问者指定的结果
    • visitBoolean

      R  visitBoolean(boolean b, P  p)
      访问注释中的 boolean 值。
      参数:
      b - 被访问的值
      p - 访问者指定的参数
      返回:
      访问的结果
    • visitByte

      R  visitByte(byte b, P  p)
      访问注释中的 byte 值。
      参数:
      b - 被访问的值
      p - 访问者指定的参数
      返回:
      访问的结果
    • visitChar

      R  visitChar(char c, P  p)
      访问注释中的 char 值。
      参数:
      c - 被访问的值
      p - 访问者指定的参数
      返回:
      访问的结果
    • visitDouble

      R  visitDouble(double d, P  p)
      访问注释中的 double 值。
      参数:
      d - 被访问的值
      p - 访问者指定的参数
      返回:
      访问的结果
    • visitFloat

      R  visitFloat(float f, P  p)
      访问注释中的 float 值。
      参数:
      f - 被访问的值
      p - 访问者指定的参数
      返回:
      访问的结果
    • visitInt

      R  visitInt(int i, P  p)
      访问注释中的 int 值。
      参数:
      i - 被访问的值
      p - 访问者指定的参数
      返回:
      访问的结果
    • visitLong

      R  visitLong(long i, P  p)
      访问注释中的 long 值。
      参数:
      i - 被访问的值
      p - 访问者指定的参数
      返回:
      访问的结果
    • visitShort

      R  visitShort(short s, P  p)
      访问注释中的 short 值。
      参数:
      s - 被访问的值
      p - 访问者指定的参数
      返回:
      访问的结果
    • visitString

      R  visitString(String  s, P  p)
      访问注释中的字符串值。
      参数:
      s - 被访问的值
      p - 访问者指定的参数
      返回:
      访问的结果
    • visitType

      R  visitType(TypeMirror  t, P  p)
      访问注释中的类型值。
      参数:
      t - 被访问的值
      p - 访问者指定的参数
      返回:
      访问的结果
    • visitEnumConstant

      R  visitEnumConstant(VariableElement  c, P  p)
      访问注释中的 enum 值。
      参数:
      c - 被访问的值
      p - 访问者指定的参数
      返回:
      访问的结果
    • visitAnnotation

      R  visitAnnotation(AnnotationMirror  a, P  p)
      访问注解中的注解值。
      参数:
      a - 被访问的值
      p - 访问者指定的参数
      返回:
      访问的结果
    • visitArray

      R  visitArray(List <? extends AnnotationValue > vals, P  p)
      访问注释中的数组值。
      参数:
      vals - 被访问的值
      p - 访问者指定的参数
      返回:
      访问的结果
    • visitUnknown

      R  visitUnknown(AnnotationValue  av, P  p)
      访问未知类型的注解值。如果语言发展并且可以将新类型的值存储在注释中,就会发生这种情况。
      参数:
      av - 正在访问的未知值
      p - 访问者指定的参数
      返回:
      访问的结果
      抛出:
      UnknownAnnotationValueException - 访问者实现可以选择抛出此异常