-
public interface Elements
对程序元素进行操作的实用方法。兼容性注意:在将来的平台版本中可能会添加到此界面中的方法。
- 从以下版本开始:
- 1.6
- 另请参见:
-
ProcessingEnvironment.getElementUtils()
-
-
Nested Class Summary
Nested Classes Modifier and Type 接口 描述 static class
Elements.Origin
元素或其他语言模型项目的 起源 。
-
方法摘要
所有方法 接口方法 抽象方法 Default Methods Modifier and Type 方法 描述 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)
如果类型元素在环境中是唯一的,则返回给出其规范名称的类型元素。default TypeElement
getTypeElement(ModuleElement module, CharSequence name)
返回给定其规范名称的类型元素,从给定的模块中可以看出。boolean
hides(Element hider, Element hidden)
测试一种类型,方法或字段是否隐藏另一种。default boolean
isBridge(ExecutableElement e)
如果可执行元素是桥接方法,则返回true
,否则为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)
以指定的顺序将元素的表示打印到给定的作者。
-
-
-
方法详细信息
-
getPackageElement
PackageElement getPackageElement(CharSequence name)
如果包在环境中是唯一的,则返回给定其全限定名称的包。 如果使用模块运行,则会搜索模块图中的所有模块以获取匹配的软件包。- 参数
-
name
- 完全限定包名称,或未命名包的空字符串 - 结果
-
指定的包,或
null
如果不能被唯一地找到
-
getPackageElement
default PackageElement getPackageElement(ModuleElement module, CharSequence name)
如给定模块所示,返回一个给定其全限定名称的包。- 实现要求:
-
此方法的默认实现将返回
null
。 - 参数
-
name
- 完全限定包名称,或未命名包的空字符串 -
module
- 查找应该发生的模块 - 结果
-
指定的包,或
null
如果找不到 - 从以下版本开始:
- 9
- 另请参见:
-
getAllPackageElements(java.lang.CharSequence)
-
getAllPackageElements
default Set<? extends PackageElement> getAllPackageElements(CharSequence name)
返回具有给定规范名称的所有包元素。 如果包元素在不同的模块中,则可能有多个具有相同规范名称的包元素。- 实现要求:
-
此方法的默认实现调用
getAllModuleElements
并存储结果。 如果这组模块是空的, 那么getPackageElement(name)
被称为传递名称参数。 如果getPackageElement(name)
为null
,则返回一组空的一组元素; 否则,将返回具有找到的包元素的单元素集。 如果所述模块组非空,模块遍历和任何非null
的结果getPackageElement(module, name)
被累积成一组。 然后返回该集合。 - 参数
-
name
- 规范名称 - 结果
- 包元素,或一个空集合,如果没有可以找到名称的包
- 从以下版本开始:
- 9
- 另请参见:
-
getPackageElement(ModuleElement, CharSequence)
-
getTypeElement
TypeElement getTypeElement(CharSequence name)
如果类型元素在环境中是唯一的,则返回给出其规范名称的类型元素。 如果使用模块运行,则会搜索模块图形中的所有模块以匹配类型元素。- 参数
-
name
- 规范名称 - 结果
-
命名的类型元素,如果不能唯一地找到,
null
-
getTypeElement
default TypeElement getTypeElement(ModuleElement module, CharSequence name)
返回给定其规范名称的类型元素,从给定的模块中可以看出。- 实现要求:
-
此方法的默认实现将返回
null
。 - 参数
-
name
- 规范名称 -
module
- 查找应该发生的模块 - 结果
-
命名的类型元素,如果不能找到,
null
- 从以下版本开始:
- 9
- 另请参见:
-
getAllTypeElements(java.lang.CharSequence)
-
getAllTypeElements
default Set<? extends TypeElement> getAllTypeElements(CharSequence name)
返回具有给定规范名称的所有类型元素。 如果类型元素在不同的模块中,则可能有多个具有相同规范名称的类型元素。- 实现要求:
-
此方法的默认实现调用
getAllModuleElements
并存储结果。 如果这组模块是空的,getTypeElement(name)
被称为传递名称参数。 如果getTypeElement(name)
为null
,则返回一组空的类型元素; 否则,返回带有find类型元素的单元素集。 如果所述模块组非空,模块遍历和任何非null
的结果getTypeElement(module, name)
被累积成一组。 然后返回该集合。 - 参数
-
name
- 规范名称 - 结果
- 类型元素或空集合,如果没有可以找到名称的类型
- 从以下版本开始:
- 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
是否在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
- 第一种方法,可能的覆盖 -
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)
以指定的顺序将元素的表示打印到给定的作者。 该方法的主要目的是用于诊断。 输出的确切格式未指定,可能会更改。- 参数
-
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功能界面
-
-