-
public interface Elements
用于操作程序元素的实用方法。兼容性注意:在将来的平台版本中,可以将方法添加到此接口。
- 从以下版本开始:
- 1.6
- 另请参见:
-
ProcessingEnvironment.getElementUtils()
-
-
嵌套类汇总
嵌套类 变量和类型 接口 描述 static class
Elements.Origin
一个元素或其他语言模型项目的 起源 。
-
方法摘要
所有方法 实例方法 抽象方法 Default Methods 变量和类型 方法 描述 List<? extends AnnotationMirror>
getAllAnnotationMirrors(Element e)
返回元素上 存在的所有注释,无论是直接存在还是通过继承存在。List<? extends Element>
getAllMembers(TypeElement type)
返回类型元素的所有成员,无论是继承还是直接声明。default Set<? extends ModuleElement>
getAllModuleElements()
返回当前环境中的所有模块元素。default Set<? extends PackageElement>
getAllPackageElements(CharSequence name)
返回具有给定规范名称的所有包元素。default Set<? extends TypeElement>
getAllTypeElements(CharSequence name)
返回具有给定规范名称的所有类型元素。Name
getBinaryName(TypeElement type)
返回类型元素的 二进制名称 。String
getConstantExpression(Object value)
返回表示原始值或字符串的 常量表达式的文本。String
getDocComment(Element e)
返回元素的文档(“Javadoc”)注释的文本。Map<? extends ExecutableElement,? extends AnnotationValue>
getElementValuesWithDefaults(AnnotationMirror a)
返回注释元素的值,包括默认值。default ModuleElement
getModuleElement(CharSequence name)
给出完全限定名称的模块元素。default ModuleElement
getModuleOf(Element type)
返回元素的模块。Name
getName(CharSequence cs)
返回与参数具有相同字符序列的名称。default Elements.Origin
getOrigin(AnnotatedConstruct c, AnnotationMirror a)
返回给定注释镜像的 原点 。default Elements.Origin
getOrigin(Element e)
返回给定元素的 原点 。default Elements.Origin
getOrigin(ModuleElement m, ModuleElement.Directive directive)
返回给定模块指令的 原点 。PackageElement
getPackageElement(CharSequence name)
如果包在环境中是唯一的,则返回给定其完全限定名称的包。default PackageElement
getPackageElement(ModuleElement module, CharSequence name)
给定其完全限定名称的包,返回一个包,如给定模块所示。PackageElement
getPackageOf(Element type)
返回元素的包。TypeElement
getTypeElement(CharSequence name)
如果type元素在环境中是唯一的,则返回给定其规范名称的type元素。default TypeElement
getTypeElement(ModuleElement module, CharSequence name)
给定其规范名称,返回一个type元素,如给定模块所示。boolean
hides(Element hider, Element hidden)
测试一种类型,方法或字段是否隐藏另一种类型,方法或字段。default boolean
isBridge(ExecutableElement e)
返回true
如果可执行元素是bridge方法,false
否则。boolean
isDeprecated(Element e)
返回true
如果元素已过时,false
否则。boolean
isFunctionalInterface(TypeElement type)
返回true
如果类型元件是功能性的接口,false
否则。boolean
overrides(ExecutableElement overrider, ExecutableElement overridden, TypeElement type)
测试一个方法(作为给定类型的成员)是否覆盖另一个方法。void
printElements(Writer w, Element... elements)
以指定的顺序将元素的表示形式打印到给定的writer。
-
-
-
方法详细信息
-
getPackageElement
PackageElement getPackageElement(CharSequence name)
如果包在环境中是唯一的,则返回给定其完全限定名称的包。 如果使用模块运行,则会搜索模块图中的所有模块以查找匹配的包。- 参数
-
name
- 完全限定的包名称,或未命名包的空字符串 - 结果
-
指定的包,如果无法唯一找到,
null
-
getPackageElement
default PackageElement getPackageElement(ModuleElement module, CharSequence name)
给定其完全限定名称的包,返回一个包,如给定模块所示。- 实现要求:
-
此方法的默认实现返回
null
。 - 参数
-
name
- 完全限定的包名称,或未命名包的空字符串 -
模块
- 应该发生查找的模块 - 结果
-
指定的包,如果找不到,
null
- 从以下版本开始:
- 9
- 另请参见:
-
getAllPackageElements(java.lang.CharSequence)
-
getAllPackageElements
default Set<? extends PackageElement> getAllPackageElements(CharSequence name)
返回具有给定规范名称的所有包元素。 如果包元素位于不同的模块中,则可能存在多个具有相同规范名称的包元素。- 实现要求:
-
此方法的默认实现调用
getAllModuleElements
并存储结果。 如果模块集为空,则通过name参数调用getPackageElement(name)
。 如果getPackageElement(name)
是null
,则返回一组空的包元素; 否则,返回包含找到的包元素的单个元素集。 如果所述模块组非空,模块遍历和任何非null
的结果getPackageElement(module, name)
被累积成一组。 然后返回该集合。 - 参数
-
name
- 规范名称 - 结果
- 包元素,如果没有找到名称的包,则为空集
- 从以下版本开始:
- 9
- 另请参见:
-
getPackageElement(ModuleElement, CharSequence)
-
getTypeElement
TypeElement getTypeElement(CharSequence name)
如果type元素在环境中是唯一的,则返回给定其规范名称的type元素。 如果使用模块运行,则会搜索模块图中的所有模块以查找匹配的类型元素。- 参数
-
name
- 规范名称 - 结果
-
命名类型元素,如果无法唯一找到,
null
-
getTypeElement
default TypeElement getTypeElement(ModuleElement module, CharSequence name)
给定其规范名称,返回一个type元素,如给定模块所示。- 实现要求:
-
此方法的默认实现返回
null
。 - 参数
-
name
- 规范名称 -
模块
- 应该发生查找的模块 - 结果
-
命名的类型元素,如果找不到
null
- 从以下版本开始:
- 9
- 另请参见:
-
getAllTypeElements(java.lang.CharSequence)
-
getAllTypeElements
default Set<? extends TypeElement> getAllTypeElements(CharSequence name)
返回具有给定规范名称的所有类型元素。 如果类型元素位于不同的模块中,则可能有多个具有相同规范名称的类型元素。- 实现要求:
-
此方法的默认实现调用
getAllModuleElements
并存储结果。 如果模块集为空,则通过name参数调用getTypeElement(name)
。 如果getTypeElement(name)
是null
,则返回一组空的类型元素; 否则,返回具有找到的类型元素的单个元素集。 如果所述模块组非空,模块遍历和任何非null
的结果getTypeElement(module, name)
被累积成一组。 然后返回该集合。 - 参数
-
name
- 规范名称 - 结果
- type元素,如果没有找到名称的类型,则为空集
- 从以下版本开始:
- 9
- 另请参见:
-
getTypeElement(ModuleElement, CharSequence)
-
getModuleElement
default ModuleElement getModuleElement(CharSequence name)
- 实现要求:
-
此方法的默认实现返回
null
。 - 参数
-
name
- 名字 - 结果
-
命名的模块元素,如果找不到
null
- 从以下版本开始:
- 9
- 另请参见:
-
getAllModuleElements()
-
getAllModuleElements
default Set<? extends ModuleElement> getAllModuleElements()
- 实现要求:
- 此方法的默认实现返回一个空集。
- 结果
- 已知模块元素,如果没有模块,则为空集
- 从以下版本开始:
- 9
- 另请参见:
-
getModuleElement(CharSequence)
-
getElementValuesWithDefaults
Map<? extends ExecutableElement,? extends AnnotationValue> getElementValuesWithDefaults(AnnotationMirror a)
返回注释元素的值,包括默认值。- 参数
-
a
- 要检查的注释 - 结果
- 注释元素的值,包括默认值
- 另请参见:
-
AnnotationMirror.getElementValues()
-
getDocComment
String getDocComment(Element e)
返回元素的文档(“Javadoc”)注释的文本。元素的文档注释是以“
/**
”开头的注释,以单独的“*/
”*/
,并且紧跟在元素之前,忽略空格。 因此,文档注释至少包含三个“*
”字符。 为文档注释返回的文本是源代码中显示的注释的处理形式。 领先的“/**
”和尾随“*/
”已删除。 对于在初始“/**
”之后开始的注释行,将丢弃前导空白字符,就像在空格或开始行之后出现的任何连续“*
”字符一样。 然后将处理过的行连接在一起(包括行终止符)并返回。- 参数
-
e
- 正在检查的元素 - 结果
-
元素的文档注释,如果没有,
null
- See The Java™ Language Specification:
- 3.6白色空间
-
isDeprecated
boolean isDeprecated(Element e)
返回true
如果元素已过时,false
否则。- 参数
-
e
- 正在检查的元素 - 结果
-
true
如果不推荐使用该元素,否则为false
-
getOrigin
default Elements.Origin getOrigin(Element e)
返回给定元素的原点 。请注意,如果此方法返回
EXPLICIT
并且元素是从类文件创建的,则该元素实际上可能不对应于源代码中显式声明的构造。 这是由于类文件格式在保留源代码信息时保真度的限制。 例如,类文件格式的至少某些版本不保留构造函数是由程序员显式声明还是隐式声明为默认构造函数 。- 实现要求:
-
此方法的默认实现返回
EXPLICIT
。 - 参数
-
e
- 正在检查的元素 - 结果
- 给定元素的起源
- 从以下版本开始:
- 9
-
getOrigin
default Elements.Origin getOrigin(AnnotatedConstruct c, AnnotationMirror a)
返回给定注释镜像的原点 。 如果注释镜像是隐式声明的容器注释,用于保存可重复注释类型的重复注释,则注释镜像为mandated 。请注意,如果此方法返回
EXPLICIT
并且注释镜像是从类文件创建的,则该元素实际上可能不对应于源代码中显式声明的构造。 这是由于类文件格式在保留源代码信息时保真度的限制。 例如,类文件格式的至少某些版本不保留注释是由程序员显式声明还是隐式声明为容器注释 。- 实现要求:
-
此方法的默认实现返回
EXPLICIT
。 - 参数
-
c
- 注释镜像修改的构造 -
a
- 正在检查的注释镜像 - 结果
- 给定注释镜像的来源
- 从以下版本开始:
- 9
- See The Java™ Language Specification:
- 9.6.3可重复的注释类型,9.7.5相同类型的多个注释
-
getOrigin
default Elements.Origin getOrigin(ModuleElement m, ModuleElement.Directive directive)
返回给定模块指令的原点 。请注意,如果此方法返回
EXPLICIT
并且模块指令是从类文件创建的,则模块指令实际上可能不对应于源代码中显式声明的构造。 这是由于类文件格式在保留源代码信息时保真度的限制。 例如,类文件格式的至少某些版本不保留uses
指令是由程序员显式声明还是作为合成构造添加。请注意,如果指令是从类文件创建的,则实现可能无法可靠地确定指令的原始状态,因为在保留源代码信息时类文件格式的保真度有限。
- 实现要求:
-
此方法的默认实现返回
EXPLICIT
。 - 参数
-
m
- 指令的模块 -
directive
- 正在检查的模块指令 - 结果
- 给定指令的来源
- 从以下版本开始:
- 9
-
isBridge
default boolean isBridge(ExecutableElement e)
返回true
如果可执行元素是bridge方法,false
否则。- 实现要求:
-
此方法的默认实现返回
false
。 - 参数
-
e
- 正在检查的可执行文件 - 结果
-
true
如果可执行元素是桥接方法,false
- 从以下版本开始:
- 9
-
getBinaryName
Name getBinaryName(TypeElement type)
返回类型元素的 二进制名称 。- 参数
-
type
- 正在检查的类型元素 - 结果
- 二进制名称
- 另请参见:
-
TypeElement.getQualifiedName()
- See The Java™ Language Specification:
- 13.1二进制形式
-
getPackageOf
PackageElement getPackageOf(Element type)
返回元素的包。 包的包装本身。- 参数
-
type
- 正在检查的元素 - 结果
- 一个元素的包
-
getModuleOf
default ModuleElement getModuleOf(Element type)
- 实现要求:
-
此方法的默认实现返回
null
。 - 参数
-
type
- 正在检查的元素 - 结果
- 元素的模块
- 从以下版本开始:
- 9
-
getAllMembers
List<? extends Element> getAllMembers(TypeElement type)
返回类型元素的所有成员,无论是继承还是直接声明。 对于类,结果还包括其构造函数,但不包括本地或匿名类。- API Note:
-
可以使用
ElementFilter
中的方法分离某些种类的元素。 - 参数
-
type
- 正在检查的类型 - 结果
- 所有类型的成员
- 另请参见:
-
Element.getEnclosedElements()
-
getAllAnnotationMirrors
List<? extends AnnotationMirror> getAllAnnotationMirrors(Element e)
返回元素上 存在的所有注释,无论是直接存在还是通过继承存在。- 参数
-
e
- 正在检查的元素 - 结果
- 元素的所有注释
- 另请参见:
-
Element.getAnnotationMirrors()
,AnnotatedConstruct
-
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
是否覆盖了m2
类中的String
(确实如此):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
- 第一种方法,可能的覆盖 -
overridden
- 第二种方法,可能被覆盖 -
type
- 第一种方法是成员的类型 - 结果
-
true
当且仅当第一个方法覆盖第二个方法时 - See The Java™ Language Specification:
- 8.4.8继承,覆盖和隐藏,9.4.1继承和覆盖
-
getConstantExpression
String getConstantExpression(Object value)
返回表示原始值或字符串的常量表达式的文本。 返回的文本采用适合表示源代码中的值的形式。- 参数
-
value
- 原始值或字符串 - 结果
- 常量表达式的文本
- 异常
-
IllegalArgumentException
- 如果参数不是原始值或字符串 - 另请参见:
-
VariableElement.getConstantValue()
-
printElements
void printElements(Writer w, Element... elements)
以指定的顺序将元素的表示形式打印到给定的writer。 该方法的主要目的是用于诊断。 未指定输出的确切格式,可能会更改。- 参数
-
w
- 要将输出打印到的w
-
elements
- 要打印的元素
-
getName
Name getName(CharSequence cs)
返回与参数具有相同字符序列的名称。- 参数
-
cs
- 要作为名称返回的字符序列 - 结果
- 与参数具有相同字符序列的名称
-
isFunctionalInterface
boolean isFunctionalInterface(TypeElement type)
返回true
如果类型元件是功能性的接口,false
否则。- 参数
-
type
- 正在检查的类型元素 - 结果
-
true
如果元素是功能接口,false
- 从以下版本开始:
- 1.8
- See The Java™ Language Specification:
- 9.8功能接口
-
-