public interface Elements
用来对程序元素进行操作的实用工具方法。
兼容性注意事项: 在将来的平台版本中可能会向此接口添加一些方法。
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。 |
方法详细信息 |
---|
PackageElement getPackageElement(CharSequence name)
name
- 完全限定的包名称;对于未命名的包,该参数为 ""
null
TypeElement getTypeElement(CharSequence name)
name
- 规范名称
null
Map<? extends ExecutableElement,? extends AnnotationValue> getElementValuesWithDefaults(AnnotationMirror a)
a
- 要检查的注释
AnnotationMirror.getElementValues()
String getDocComment(Element e)
e
- 将被检查的元素
null
boolean isDeprecated(Element e)
true
,否则返回
false
。
e
- 将被检查的元素
true
,否则返回
false
Name getBinaryName(TypeElement type)
type
- 将被检查的类型元素
TypeElement.getQualifiedName()
PackageElement getPackageOf(Element type)
type
- 将被检查的元素
List<? extends Element> getAllMembers(TypeElement type)
注意,使用 ElementFilter
中的方法可以隔离某个种类的元素。
type
- 将被检查的类型
Element.getEnclosedElements()
List<? extends AnnotationMirror> getAllAnnotationMirrors(Element e)
e
- 将被检查的元素
Element.getAnnotationMirrors()
boolean hides(Element hider, Element hidden)
hider
- 第一个元素
hidden
- 第二个元素
true
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("java.lang.String"));
下例描述了一种更有趣的情况,在这种情况下,类型
A
中的方法没有重写类型
B
中名称类似的方法:
当时,当被视为第三种类型class A { public void m() {} }
interface B { void m(); }
...
m1 = ...; // A.m
m2 = ...; // B.m
assert ! elements.overrides(m1, m2, elements.getTypeElement("A"));
C
的成员时,
A
中的方法重写了
B
中的方法:
class C extends A implements B {}
...
assert elements.overrides(m1, m2, elements.getTypeElement("C"));
overrider
- 第一个方法,可能是 overrider
overridden
- 第二个方法,可能被重写
type
- 第一个方法是其成员的类型
true
String getConstantExpression(Object value)
value
- 基本值或字符串
IllegalArgumentException
- 如果参数不是基本值或字符串
VariableElement.getConstantValue()
void printElements(Writer w, Element... elements)
w
- 输出打印到的 writer
elements
- 要打印的元素
Name getName(CharSequence cs)
cs
- 将以名称形式返回的字符序列