java.lang.Object javax.lang.model.util.AbstractElementVisitor6<R,P> javax.lang.model.util.ElementScanner6<R,P>
R
- 此 visitor 的方法的返回类型。对于不需要返回结果的 visitor,使用
Void
。
@SupportedSourceVersion(value=RELEASE_6) public class ElementScanner6<R,P>
程序元素的扫描 visitor,具有适用于 RELEASE_6
源版本的默认行为。此类中的 visitXYZ 方法通过对其 封装元素、参数等调用 scan
来扫描其组件元素,正如其各自的方法规范所指示的那样。子类可以通过重写 visitXYZ 方法控制元素的访问顺序。注意,scanner 的客户端可通过对相关根元素调用 v.scan(e, p)
而不是 v.visit(e, p)
来获得所需行为。
当子类重写 visitXYZ 方法时,新方法可以通过调用 super.visitXYZ 按默认方式扫描封装的元素。使用这种方式,就附加处理而言,具体 visitor 可以控制遍历组件元素的顺序;例如,在重写方法的开始处以一致的方式调用 super.visitXYZ 将产生先序遍历 (preorder traversal)。如果应该以其他顺序遍历组件元素,那么重写的 visit 方法应该使用按所需顺序排列的元素调用 scan
,而不是调用 super.visitXYZ。
根据常规协定,可以重写此类中的方法。注意,具有 @Override
的具体子类中的注释方法可以帮助确定那些打算重写的方法。
警告: 以后可能会向此类实现的 ElementVisitor
接口添加一些方法,以适应添加到 Java™ 编程语言未来版本中的新(当前未知的)语言结构。所以,将来可能会向此类添加名称以 "visit"
开头的方法;为了避免不兼容,扩展此类的类不应该声明任何名称以 "visit"
开头的实例方法。
在添加一个这样的新 visit 方法时,此类中的默认实现将调用 visitUnknown
方法。还将引入新的元素 scanner visitor 类,以对应新的语言级别;此 visitor 针对相关 visit 方法有不同的默认行为。在引入新的 visitor 时,此 visitor 的全部或部分可能过时。
字段摘要 | |
---|---|
protected R |
DEFAULT_VALUE 指定的默认值。 |
构造方法摘要 | |
---|---|
protected |
ElementScanner6() 具体子类的构造方法;使用 null 作为默认值。 |
protected |
ElementScanner6(R defaultValue) 具体子类的构造方法;使用参数作为默认值。 |
方法摘要 | |
---|---|
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) 访问 executable 元素。 |
R |
visitPackage(PackageElement e, P p) 访问包元素。 |
R |
visitType(TypeElement e, P p) 访问类型元素。 |
R |
visitTypeParameter(TypeParameterElement e, P p) 访问类型参数元素。 |
R |
visitVariable(VariableElement e, P p) 访问变量元素。 |
从类 javax.lang.model.util.AbstractElementVisitor6 继承的方法 |
---|
visit, visit, visitUnknown |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
protected final R DEFAULT_VALUE
构造方法详细信息 |
---|
protected ElementScanner6()
null
作为默认值。
protected ElementScanner6(R defaultValue)
方法详细信息 |
---|
public final R scan(Iterable<? extends Element> iterable, P p)
scan(Element, P)
。返回最后一次调用
scan
的结果;对于空 iterable,则返回
DEFAULT_VALUE
。
iterable
- 要扫描的元素
p
- 附加参数
DEFAULT_VALUE
public R scan(Element e, P p)
e.accept(this, p)
处理元素;此方法可被子类重写。
e
的结果。
public final R scan(Element e)
v.scan(e, null)
的便捷方法。
e
的结果。
public R visitPackage(PackageElement e, P p)
e
- 要访问的元素
p
- 特定于 visitor 的参数
public R visitType(TypeElement e, P p)
e
- 要访问的元素
p
- 特定于 visitor 的参数
public R visitVariable(VariableElement e, P p)
e
- 要访问的元素
p
- 特定于 visitor 的参数
public R visitExecutable(ExecutableElement e, P p)
e
- 要访问的元素
p
- 特定于 visitor 的参数
public R visitTypeParameter(TypeParameterElement e, P p)
e
- 要访问的元素
p
- 特定于 visitor 的参数