javax.lang.model.util

接口
public interface Elements

用来对程序元素进行操作的实用工具方法。

兼容性注意事项: 在将来的平台版本中可能会向此接口添加一些方法。

从以下版本开始:
1.6
另请参见:
ProcessingEnvironment.getElementUtils()

方法摘要
 List<? extends AnnotationMirror> getAllAnnotationMirrors(Element e)
          返回元素的所有注释,不管是继承的还是直接存在的。
 List<? extends Element> getAllMembers(TypeElement type)
          返回类型元素的所有成员,不管是继承的还是直接声明的。
 Name getBinaryName(TypeElement type)
          返回类型元素的二进制名称
 String getConstantExpression(Object value)
          返回表示基本值或字符串的常量表达式 文本。
 String getDocComment(Element e)
          返回元素的文档("Javadoc")注释文本。
 Map<? extends ExecutableElement,? extends AnnotationValue> getElementValuesWithDefaults(AnnotationMirror a)
          返回注释元素的值,包括默认值。
 Name getName(CharSequence cs)
          返回与参数具有相同字符序列的名称。
 PackageElement getPackageElement(CharSequence name)
          返回已给出其完全限定名称的包。
 PackageElement getPackageOf(Element type)
          返回元素的包。
 TypeElement getTypeElement(CharSequence name)
          返回已给出其规范名称的类型元素。
 boolean hides(Element hider, Element hidden)
          测试一个类型、方法或字段是否隐藏了另一个类型、方法或字段。
 boolean isDeprecated(Element e)
          如果元素已过时,则返回 true,否则返回 false
 boolean overrides(ExecutableElement overrider, ExecutableElement overridden, TypeElement type)
          测试一个方法(作为给定类型的成员)是否重写了另一个方法。
 void printElements(Writer w, Element... elements)
          按指定顺序将元素的表示形式打印到给定 writer。
 

方法详细信息

getPackageElement

PackageElement getPackageElement(CharSequence name)
返回已给出其完全限定名称的包。

参数:
name - 完全限定的包名称;对于未命名的包,该参数为 ""
返回:
指定的包;如果没有找到这样的包,则返回 null

getTypeElement

TypeElement getTypeElement(CharSequence name)
返回已给出其规范名称的类型元素。

参数:
name - 规范名称
返回:
指定的类型元素;如果没有找到这样的元素,则返回 null

getElementValuesWithDefaults

Map<? extends ExecutableElement,? extends AnnotationValue> getElementValuesWithDefaults(AnnotationMirror a)
返回注释元素的值,包括默认值。

参数:
a - 要检查的注释
返回:
注释元素的值,包括默认值
另请参见:
AnnotationMirror.getElementValues()

getDocComment

String getDocComment(Element e)
返回元素的文档("Javadoc")注释文本。

参数:
e - 将被检查的元素
返回:
元素的文档注释;如果没有,则返回 null

isDeprecated

boolean isDeprecated(Element e)
如果元素已过时,则返回 true,否则返回 false

参数:
e - 将被检查的元素
返回:
如果元素已过时,则返回 true,否则返回 false

getBinaryName

Name getBinaryName(TypeElement type)
返回类型元素的 二进制名称

参数:
type - 将被检查的类型元素
返回:
二进制名称
另请参见:
TypeElement.getQualifiedName()

getPackageOf

PackageElement getPackageOf(Element type)
返回元素的包。包的包是它本身。

参数:
type - 将被检查的元素
返回:
元素的包

getAllMembers

List<? extends Element> getAllMembers(TypeElement type)
返回类型元素的所有成员,不管是继承的还是直接声明的。对于一个类,结果还包括其构造方法,但不包括局部类或匿名类。

注意,使用 ElementFilter 中的方法可以隔离某个种类的元素。

参数:
type - 将被检查的类型
返回:
类型的所有成员
另请参见:
Element.getEnclosedElements()

getAllAnnotationMirrors

List<? extends AnnotationMirror> getAllAnnotationMirrors(Element e)
返回元素的所有注释,不管是继承的还是直接存在的。

参数:
e - 将被检查的元素
返回:
元素的所有注释
另请参见:
Element.getAnnotationMirrors()

hides

boolean hides(Element hider,
              Element hidden)
测试一个类型、方法或字段是否隐藏了另一个类型、方法或字段。

参数:
hider - 第一个元素
hidden - 第二个元素
返回:
当且仅当第一个元素隐藏了第二个元素时返回 true

overrides

boolean overrides(ExecutableElement overrider,
                  ExecutableElement overridden,
                  TypeElement type)
测试一个方法(作为给定类型的成员)是否重写了另一个方法。当非抽象方法重写抽象方法时,还可以说成是前者 实现 了后者。

在最简单且最典型的用法中,type 参数的值就是直接封装 overrider(可能重写的方法)的类或接口。例如,假设 m1 表示方法 String.hashCode,而 m2 表示 Object.hashCode。可以询问 m1 是否重写了 String 类中的 m2(它的确重写了该方法):

assert elements.overrides(m1, m2, elements.getTypeElement(&quot;java.lang.String&quot;));
下例描述了一种更有趣的情况,在这种情况下,类型 A 中的方法没有重写类型 B 中名称类似的方法:
class A { public void m() {} }
interface B { void m(); }
...
m1 = ...; // A.m
m2 = ...; // B.m
assert ! elements.overrides(m1, m2, elements.getTypeElement(&quot;A&quot;));
当时,当被视为第三种类型 C 的成员时, A 中的方法重写了 B 中的方法:
class C extends A implements B {}
...
assert elements.overrides(m1, m2, elements.getTypeElement(&quot;C&quot;));

参数:
overrider - 第一个方法,可能是 overrider
overridden - 第二个方法,可能被重写
type - 第一个方法是其成员的类型
返回:
当且仅当第一个方法重写第二个方法时返回 true

getConstantExpression

String getConstantExpression(Object value)
返回表示基本值或字符串的 常量表达式 文本。返回文本的形式是一种适合于表示源代码中的值的形式。

参数:
value - 基本值或字符串
返回:
常量表达式的文本
抛出:
IllegalArgumentException - 如果参数不是基本值或字符串
另请参见:
VariableElement.getConstantValue()

printElements

void printElements(Writer w,
                   Element... elements)
按指定顺序将元素的表示形式打印到给定 writer。此方法的主要用途是诊断。输出的具体格式 没有 指定并且是可以更改的。

参数:
w - 输出打印到的 writer
elements - 要打印的元素

getName

Name getName(CharSequence cs)
返回与参数具有相同字符序列的名称。

参数:
cs - 将以名称形式返回的字符序列