- 类型参数:
-
R
- 此访问者方法的返回类型。对于不需要返回结果的访问者,请使用Void
。 -
P
- 此访问者方法的附加参数的类型。对于不需要附加参数的访问者,请使用Void
。
- 所有已知的实现类:
-
AbstractTypeVisitor14
,AbstractTypeVisitor6
,AbstractTypeVisitor7
,AbstractTypeVisitor8
,AbstractTypeVisitor9
,SimpleTypeVisitor14
,SimpleTypeVisitor6
,SimpleTypeVisitor7
,SimpleTypeVisitor8
,SimpleTypeVisitor9
,TypeKindVisitor14
,TypeKindVisitor6
,TypeKindVisitor7
,TypeKindVisitor8
,TypeKindVisitor9
public interface TypeVisitor<R,P>
类型访问者,采用访问者设计模式。实现此接口的类用于在编译时未知类型的情况下操作类型。当将访问者传递给类型的
accept
方法时,将调用最适用于该类型的visitXyz
方法。
实现此接口的类可能会或可能不会在附加参数p
为null
时抛出NullPointerException
;有关详细信息,请参阅实现类的文档。
- API 注意:
-
警告: 可能会向此接口添加方法,以适应未来版本的Java编程语言中添加的新的、当前未知的语言结构。已经添加了这样的补充以支持此API引入后添加的语言特性。直接实现此接口的访问者类可能与平台的未来版本源代码不兼容。为避免此源代码不兼容性,建议访问者实现应该扩展实现此接口的适当抽象访问者类。但是,API通常应该使用此访问者接口作为参数、返回类型等的类型,而不是其中一个抽象类。
预计将添加用于适应新语言结构的方法作为默认方法,以提供强大的源代码兼容性。默认方法的实现将调用
visitUnknown
,这种行为将在支持具有新语言结构的源版本的具体访问者中被覆盖。在util包中有几个类系实现了此访问者接口。这些类系遵循类似
FooVisitor
N的命名模式,其中N表示适用于的源版本。特别是,FooVisitor
N预计将处理源版本N中存在的所有语言结构。如果在版本N之后没有添加新的语言结构(或后续发布),FooVisitor
N也可以处理稍后的源版本;在这种情况下,FooVisitor
N类上的SupportedSourceVersion
注解将指示较新版本。当访问表示在源版本N之后引入的语言结构的类型时,FooVisitor
N将抛出一个UnknownTypeException
,除非该行为被覆盖。在选择要子类化的访问者系列成员时,子类化最近的一个会增加所覆盖的源版本范围。在选择要子类化的访问者系列时,考虑它们的内置功能:
AbstractTypeVisitor
s: 骨架访问者实现。SimpleTypeVisitor
s: 支持默认操作和默认返回值。TypeKindVisitor
s: 以每种类型的粒度提供访问方法,因为某些类型类别可能有多种类型。 - 自版本:
- 1.6
-
Method Summary
Modifier and TypeMethodDescriptiondefault R
visit
(TypeMirror t) 一个等效于visit(t, null)
的便利方法。visit
(TypeMirror t, P p) 访问一个类型。visitArray
(ArrayType t, P p) 访问一个数组类型。visitDeclared
(DeclaredType t, P p) 访问一个声明类型。visitError
(ErrorType t, P p) 访问一个错误类型。visitExecutable
(ExecutableType t, P p) 访问一个可执行类型。访问一个交集类型。visitNoType
(NoType t, P p) 访问一个NoType
实例。访问空类型。visitPrimitive
(PrimitiveType t, P p) 访问一个原始类型。visitTypeVariable
(TypeVariable t, P p) 访问一个类型变量。visitUnion
(UnionType t, P p) 访问一个联合类型。visitUnknown
(TypeMirror t, P p) 访问未知类型的类型。visitWildcard
(WildcardType t, P p) 访问一个通配符类型。
-
Method Details
-
visit
访问一个类型。- 参数:
-
t
- 要访问的类型 -
p
- 访问者指定的参数 - 返回:
- 访问者指定的结果
-
visit
一个等效于visit(t, null)
的便利方法。- 实现要求:
-
默认实现是
visit(t, null)
。 - 参数:
-
t
- 要访问的元素 - 返回:
- 访问者指定的结果
-
visitPrimitive
访问一个原始类型。- 参数:
-
t
- 要访问的类型 -
p
- 访问者指定的参数 - 返回:
- 访问者指定的结果
-
visitNull
访问空类型。- 参数:
-
t
- 要访问的类型 -
p
- 访问者指定的参数 - 返回:
- 访问者指定的结果
-
visitArray
访问一个数组类型。- 参数:
-
t
- 要访问的类型 -
p
- 访问者指定的参数 - 返回:
- 访问者指定的结果
-
visitDeclared
访问一个声明类型。- 参数:
-
t
- 要访问的类型 -
p
- 访问者指定的参数 - 返回:
- 访问者指定的结果
-
visitError
访问一个错误类型。- 参数:
-
t
- 要访问的类型 -
p
- 访问者指定的参数 - 返回:
- 访问者指定的结果
-
visitTypeVariable
访问一个类型变量。- 参数:
-
t
- 要访问的类型 -
p
- 访问者指定的参数 - 返回:
- 访问者指定的结果
-
visitWildcard
访问一个通配符类型。- 参数:
-
t
- 要访问的类型 -
p
- 访问者指定的参数 - 返回:
- 访问者指定的结果
-
visitExecutable
访问一个可执行类型。- 参数:
-
t
- 要访问的类型 -
p
- 访问者指定的参数 - 返回:
- 访问者指定的结果
-
visitNoType
访问一个NoType
实例。- 参数:
-
t
- 要访问的类型 -
p
- 访问者指定的参数 - 返回:
- 访问者指定的结果
-
visitUnknown
访问未知类型的类型。如果语言演变并向TypeMirror
层次结构添加新类型,就会发生这种情况。- 参数:
-
t
- 要访问的类型 -
p
- 访问者指定的参数 - 返回:
- 访问者指定的结果
- 抛出:
-
UnknownTypeException
- 访问者实现可以选择抛出此异常
-
visitUnion
访问一个联合类型。- 参数:
-
t
- 要访问的类型 -
p
- 访问者指定的参数 - 返回:
- 访问者指定的结果
- 自版本:
- 1.7
-
visitIntersection
访问一个交集类型。- 参数:
-
t
- 要访问的类型 -
p
- 访问者指定的参数 - 返回:
- 访问者指定的结果
- 自版本:
- 1.8
-