R
- 这个访问者的方法的返回类型。
对于不需要返回结果的访问者,请使用Void
。
P
- 访问者方法的附加参数的类型。
对不需要Void
的访问者使用Void。
@SupportedSourceVersion(value=RELEASE_6) public class ElementScanner6<R,P> extends AbstractElementVisitor6<R,P>
RELEASE_6
源版本的默认行为的程序元素的扫描访问者。
所述visitXYZ种方法在这个类通过调用扫描其成分元素scan
他们enclosed elements , parameters ,等等,如在单独的方法规范表示。
一个子类可以通过覆盖visitXYZ方法来控制访问的顺序元素。
请注意,扫描仪的客户端可能会获得所需的行为,在感兴趣的根对象上调用v.scan(e, p)
而不是v.visit(e, p)
。
当一个子类覆盖一个visitXYZ方法时,新方法可以通过调用super.visitXYZ以默认方式扫描附带的元素。 以这种方式,具体的访问者可以控制关于附加处理的遍历组件元素的顺序; 例如,在覆盖方法的开始时始终调用super.visitXYZ将产生预序遍历等。如果组件元素应以其他顺序遍历 ,而不是调用super.visitXYZ ,则覆盖访问方法应该调用scan
中的元素期望的顺序。
本课程中的方法可能会因其总体合同而被覆盖。 需要注意的是注释方法,具体子类与@Override
将有助于确定那些打算重写的方法。
警告: ElementVisitor
实现的ElementVisitor接口可能会在以后添加方法,以适应未来版本的Java编程语言中添加的新的,当前未知的语言结构。 因此, "visit"
可以将名称以"visit"
开头的方法添加到此类中; 为了避免不兼容,扩展此类的类不应声明任何以"visit"
实例方法。
当添加这种新的访问方法时,此类中的默认实现将是调用visitUnknown
方法。 还将引入新的元素扫描器访问者类来对应于新的语言级别; 该访问者对于访问方法将具有不同的默认行为。 当新访客被介绍时,全部或部分访问者可能会被弃用。
ElementScanner7
, ElementScanner8
Modifier and Type | Field and Description |
---|---|
protected R |
DEFAULT_VALUE
指定的默认值。
|
Modifier | Constructor and Description |
---|---|
protected |
ElementScanner6()
具体子类的构造方法
使用 null 作为默认值。
|
protected |
ElementScanner6(R defaultValue)
具体子类的构造方法
使用参数作为默认值。
|
Modifier and Type | Method and Description |
---|---|
R |
scan(Element e)
方便方法相当于
v.scan(e, null) 。
|
R |
scan(Element e, P p)
通过调用 e.accept(this, p) 元素;
此方法可能被子类覆盖。
|
R |
scan(Iterable<? extends Element> iterable, P p)
迭代给定元素并调用每个元素
scan(Element, P) 。
|
R |
visitExecutable(ExecutableElement e, P p)
访问可执行元素。
|
R |
visitPackage(PackageElement e, P p)
访问包元素。
|
R |
visitType(TypeElement e, P p)
访问类型元素。
|
R |
visitTypeParameter(TypeParameterElement e, P p)
访问类型参数元素。
|
R |
visitVariable(VariableElement e, P p)
访问可变元素。
|
visit, visit, visitUnknown
protected final R DEFAULT_VALUE
protected ElementScanner6()
null
作为默认值。
protected ElementScanner6(R defaultValue)
defaultValue
- 默认值
public final R scan(Iterable<? extends Element> iterable, P p)
scan(Element, P)
。
返回上一次调用的结果为scan
或DEFAULT_VALUE
为空的迭代。
iterable
- 要扫描的元素
p
- 附加参数
DEFAULT_VALUE
如果没有元素
public R scan(Element e, P p)
e.accept(this, p)
元素;
此方法可能被子类覆盖。
e
- 要扫描的元素
p
- 扫描仪指定的参数
e
。
public R visitPackage(PackageElement e, P p)
e
- 要访问的元素
p
- 访客指定的参数
public R visitType(TypeElement e, P p)
e
- 要访问的元素
p
- 访客指定的参数
public R visitVariable(VariableElement e, P p)
RESOURCE_VARIABLE
,在这种情况下visitUnknown
。
e
- 要访问的元素
p
- 访客指定的参数
public R visitExecutable(ExecutableElement e, P p)
e
- 要访问的元素
p
- 访客指定的参数
public R visitTypeParameter(TypeParameterElement e, P p)
e
- 要访问的元素
p
- 访客指定的参数
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.