- 类型参数:
-
R
- 此访问者方法的返回类型 -
P
- 此访问者方法的附加参数的类型。
- 所有已知的实现类:
-
AbstractAnnotationValueVisitor14
,AbstractAnnotationValueVisitor6
,AbstractAnnotationValueVisitor7
,AbstractAnnotationValueVisitor8
,AbstractAnnotationValueVisitor9
,SimpleAnnotationValueVisitor14
,SimpleAnnotationValueVisitor6
,SimpleAnnotationValueVisitor7
,SimpleAnnotationValueVisitor8
,SimpleAnnotationValueVisitor9
public interface AnnotationValueVisitor<R,P>
注解接口元素值的访问者,使用访问者设计模式的变体。与标准访问者根据类型层次结构中成员的具体类型进行分派不同,此访问者根据存储的数据类型进行分派;例如,没有用于存储
boolean
值与int
值等的不同子类。实现此接口的类用于在编译时未知该值的类型时对值进行操作。当将访问者传递给值的accept
方法时,将调用适用于该值的visitXyz
方法。
实现此接口的类可能会或可能不会在附加参数p
为null
时抛出NullPointerException
;有关详细信息,请参阅实现类的文档。
- API 注意:
-
警告: 可能会向此接口添加方法,以适应未来版本的Java编程语言中添加的新的、当前未知的语言结构。在此API引入后,另一个访问者接口中已经发生了这样的添加,以支持添加后的语言特性。直接实现此接口的访问者类可能与平台的未来版本源代码不兼容。为避免此源代码不兼容性,建议访问者实现应扩展实现此接口的适当抽象访问者类。但是,API通常应该使用此访问者接口作为参数、返回类型等的类型,而不是其中一个抽象类。
预计将添加用于适应新语言结构的方法作为默认方法,以提供强大的源代码兼容性,就像在
ElementVisitor
中的visitModule
中所做的那样。此接口中默认方法的实现将调用visitUnknown
,该行为将在支持具有新语言结构的源版本的具体访问者中被覆盖。在util包中有几个实现此访问者接口的类系列。这些系列遵循类似
FooVisitor
N的命名模式,其中N表示适用于的源版本。特别是,预计FooVisitor
N将处理源版本N中存在的所有语言结构。如果在版本N + 1(或随后的发布版)中没有添加新的语言结构,则FooVisitor
N也可以处理稍后的源版本;在这种情况下,FooVisitor
N类上的SupportedSourceVersion
注解将指示较新版本。当访问表示在源版本N之后引入的语言结构的注解值时,FooVisitor
N将抛出一个UnknownAnnotationValueException
,除非该行为被覆盖。在选择要子类化的访问者系列成员时,子类化最近的一个会增加所覆盖的源版本范围。在选择要子类化的访问者系列时,考虑它们的内置功能:
AbstractAnnotationValueVisitor
s: 骨架访问者实现。SimpleAnnotationValueVisitor
s: 支持默认操作和默认返回值。
- 自从:
- 1.6
-
Method Summary
Modifier and TypeMethodDescriptiondefault R
visit
(AnnotationValue av) 一个等效于visit(av, null)
的便利方法。visit
(AnnotationValue av, P p) 访问注解值。visitAnnotation
(AnnotationMirror a, P p) 访问注解中的注解值。visitArray
(List<? extends AnnotationValue> vals, P p) 访问注解中的数组值。visitBoolean
(boolean b, P p) 访问注解中的boolean
值。访问注解中的byte
值。访问注解中的char
值。visitDouble
(double d, P p) 访问注解中的double
值。访问注解中的enum
值。visitFloat
(float f, P p) 访问注解中的float
值。访问注解中的int
值。访问注解中的long
值。visitShort
(short s, P p) 访问注解中的short
值。visitString
(String s, P p) 访问注解中的字符串值。visitType
(TypeMirror t, P p) 访问注解中的类型值。visitUnknown
(AnnotationValue av, P p) 访问未知类型的注解值。
-
Method Details
-
visit
访问注解值。- 参数:
-
av
- 要访问的值 -
p
- 访问者指定的参数 - 返回:
- 访问者指定的结果
-
visit
一个等效于visit(av, null)
的便利方法。- 实现要求:
-
默认实现是
visit(av, null)
。 - 参数:
-
av
- 要访问的值 - 返回:
- 访问者指定的结果
-
visitBoolean
访问注解中的boolean
值。- 参数:
-
b
- 正在访问的值 -
p
- 访问者指定的参数 - 返回:
- 访问的结果
-
visitByte
访问注解中的byte
值。- 参数:
-
b
- 正在访问的值 -
p
- 访问者指定的参数 - 返回:
- 访问的结果
-
visitChar
访问注解中的char
值。- 参数:
-
c
- 正在访问的值 -
p
- 访问者指定的参数 - 返回:
- 访问的结果
-
visitDouble
访问注解中的double
值。- 参数:
-
d
- 正在访问的值 -
p
- 访问者指定的参数 - 返回:
- 访问的结果
-
visitFloat
访问注解中的float
值。- 参数:
-
f
- 正在访问的值 -
p
- 访问者指定的参数 - 返回:
- 访问的结果
-
visitInt
访问注解中的int
值。- 参数:
-
i
- 正在访问的值 -
p
- 访问者指定的参数 - 返回:
- 访问的结果
-
visitLong
访问注解中的long
值。- 参数:
-
i
- 正在访问的值 -
p
- 访问者指定的参数 - 返回:
- 访问的结果
-
visitShort
访问注解中的short
值。- 参数:
-
s
- 正在访问的值 -
p
- 访问者指定的参数 - 返回:
- 访问的结果
-
visitString
访问注解中的字符串值。- 参数:
-
s
- 正在访问的值 -
p
- 访问者指定的参数 - 返回:
- 访问的结果
-
visitType
访问注解中的类型值。- 参数:
-
t
- 正在访问的值 -
p
- 访问者指定的参数 - 返回:
- 访问的结果
-
visitEnumConstant
访问注解中的enum
值。- 参数:
-
c
- 正在访问的值 -
p
- 访问者指定的参数 - 返回:
- 访问的结果
-
visitAnnotation
访问注解中的注解值。- 参数:
-
a
- 正在访问的值 -
p
- 访问者指定的参数 - 返回:
- 访问的结果
-
visitArray
访问注解中的数组值。- 参数:
-
vals
- 被访问的值 -
p
- 访问者指定的参数 - 返回:
- 访问的结果
-
visitUnknown
访问未知类型的注解值。如果语言发展并且可以在注解中存储新类型的值,则可能会发生这种情况。- 参数:
-
av
- 被访问的未知值 -
p
- 访问者指定的参数 - 返回:
- 访问的结果
- 抛出:
-
UnknownAnnotationValueException
- 访问者实现可以选择抛出此异常
-