兼容性说明:在平台的未来版本中,可能会将方法添加到此接口。
- 自从:
- 1.6
- 参见:
-
内部类总结
内部类 -
方法总结
修饰符和类型方法描述List<? extends AnnotationMirror>返回所有注释展示在元素上,无论是直接存在还是通过继承存在。getAllMembers(TypeElement type) 返回类型元素的所有成员,无论是继承的还是直接声明的。default Set<? extends ModuleElement>返回当前环境中的所有模块元素。default Set<? extends PackageElement>返回具有给定规范名称的所有包元素。default Set<? extends TypeElement>返回具有给定规范名称的所有类型元素。getBinaryName(TypeElement type) 返回二进制名称类型元素。getConstantExpression(Object value) 返回 a 的文本常量表达式表示原始值或字符串。返回元素的文档(“Javadoc”)注释的文本。Map<? extends ExecutableElement,? extends AnnotationValue> 返回注解元素的值,包括默认值。default JavaFileObject返回此元素的文件对象,如果没有这样的文件对象,则返回null。default ModuleElementgetModuleElement(CharSequence name) 返回给定其完全限定名称的模块元素。default ModuleElement返回元素的模块。getName(CharSequence cs) 返回与参数具有相同字符序列的名称。default Elements.Origin返回给定注释镜像的origin。default Elements.Origin返回给定元素的 origin。default Elements.OrigingetOrigin(ModuleElement m, ModuleElement.Directive directive) 返回给定模块指令的 origin。default TypeElement如果存在这样的包含元素,则返回包含该元素的最外层类型元素;否则返回null。如果包在环境中是唯一可确定的,则返回给定其完全限定名称的包。default PackageElementgetPackageElement(ModuleElement module, CharSequence name) 返回一个给定其完全限定名称的包,如从给定模块中看到的那样。返回元素的包。getTypeElement(CharSequence name) 如果类型元素在环境中是唯一可确定的,则返回给定其规范名称的类型元素。default TypeElementgetTypeElement(ModuleElement module, CharSequence name) 返回给定其规范名称的类型元素,如从给定模块中看到的那样。boolean测试一种类型、方法或字段是否隐藏了另一种类型、方法或字段。default booleanisAutomaticModule(ModuleElement module) 如果模块元素是自动模块,则返回true,否则返回false。default boolean如果可执行元素是桥接方法,则返回true,否则返回false。default boolean如果可以确定可执行元素是记录的规范构造函数,则返回true,否则返回false。default boolean如果可以确定可执行元素是记录的紧凑构造函数,则返回true,否则返回false。boolean如果该元素已弃用,则返回true,否则返回false。boolean如果类型元素是功能接口,则返回true,否则返回false。booleanoverrides(ExecutableElement overrider, ExecutableElement overridden, TypeElement type) 测试一个方法是否作为给定类或接口的成员重写另一个方法。voidprintElements(Writer w, Element... elements) 按指定顺序将元素的表示形式打印到给定的编写器。default RecordComponentElementrecordComponentFor(ExecutableElement accessor) 返回给定访问器的记录组件。
-
方法详情
-
getPackageElement
如果包在环境中是唯一可确定的,则返回给定其完全限定名称的包。如果使用模块运行,则在两个阶段的过程中搜索给定名称的包:- 查找具有由
getPackageElement(ModuleElement, CharSequence)返回的给定名称的非空包,其中提供的 ModuleSymbol 是任何 根模块 , - 如果以上产生一个空列表,搜索
all modules具有给定名称的可观察包
null。- 参数:
name- 完全限定的包名称,或未命名包的空字符串- 返回:
-
指定的包,或者
null如果没有可以唯一确定的包。
- 查找具有由
-
getPackageElement
返回一个给定其完全限定名称的包,如从给定模块中看到的那样。- 实现要求:
-
此方法的默认实现返回
null。 - 参数:
module- 查找应该发生的相对模块name- 完全限定的包名称,或未命名包的空字符串- 返回:
-
指定的包,如果找不到则返回
null - 自从:
- 9
- 参见:
-
getAllPackageElements
返回具有给定规范名称的所有包元素。如果包元素位于不同的模块中,则可能存在多个具有相同规范名称的包元素。- 实现要求:
-
此方法的默认实现调用
getAllModuleElements并存储结果。如果模块集为空,则通过名称参数调用getPackageElement(name)。如果getPackageElement(name)是null,则返回一组空的包元素;否则,返回包含找到的包元素的单元素集。如果模块集非空,则迭代模块并将getPackageElement(module, name)的任何非null结果累积到一个集合中。然后返回该集合。 - 参数:
name- 规范名称- 返回:
- 包元素,如果找不到具有名称的包,则为空集
- 自从:
- 9
- 参见:
-
getTypeElement
如果类型元素在环境中是唯一可确定的,则返回给定其规范名称的类型元素。如果使用模块运行,则在两阶段过程中搜索给定名称的类型元素:- 查找具有由
getTypeElement(ModuleElement, CharSequence)返回的给定名称的类型元素,其中提供的 ModuleSymbol 是任何 根模块 , - 如果以上产生一个空列表,搜索
all modules具有给定名称的可观察类型元素
null。- 参数:
name- 规范名称- 返回:
-
命名的类型元素,或者
null如果没有可以唯一确定的类型元素。
- 查找具有由
-
getTypeElement
返回给定其规范名称的类型元素,如从给定模块中看到的那样。- 实现要求:
-
此方法的默认实现返回
null。 - 参数:
module- 查找应该发生的相对模块name- 规范名称- 返回:
-
命名的类型元素,如果找不到则返回
null - 自从:
- 9
- 参见:
-
getAllTypeElements
返回具有给定规范名称的所有类型元素。如果类型元素位于不同的模块中,则可能存在多个具有相同规范名称的类型元素。- 实现要求:
-
此方法的默认实现调用
getAllModuleElements并存储结果。如果模块集为空,则通过名称参数调用getTypeElement(name)。如果getTypeElement(name)是null,则返回一个空的类型元素集;否则,返回具有找到的类型元素的单元素集。如果模块集非空,则迭代模块并将getTypeElement(module, name)的任何非null结果累积到一个集合中。然后返回该集合。 - 参数:
name- 规范名称- 返回:
- 类型元素,如果找不到具有名称的类型,则为空集
- 自从:
- 9
- 参见:
-
getModuleElement
返回给定其完全限定名称的模块元素。如果找不到请求的模块,则返回null。找不到模块的一种情况是环境不包含模块,例如为没有模块的源版本配置的注释处理环境。- 实现要求:
-
此方法的默认实现返回
null。 - 参数:
name- 未命名模块的名称或空字符串- 返回:
-
命名的模块元素,或者
null如果找不到 - 自从:
- 9
- 参见:
-
getAllModuleElements
返回当前环境中的所有模块元素。如果不存在任何模块,则返回一个空集。当环境不包含模块时,会出现一种不存在模块的情况,例如为没有模块的源版本配置的注释处理环境。- 实现要求:
- 此方法的默认实现返回一个空集。
- 返回:
- 已知的模块元素,如果没有模块则为空集
- 自从:
- 9
- 参见:
-
getElementValuesWithDefaults
Map <? extends ExecutableElement ,? extends AnnotationValue > getElementValuesWithDefaults(AnnotationMirror a) 返回注解元素的值,包括默认值。- 参数:
a- 要检查的注释- 返回:
- 注解元素的值,包括默认值
- 参见:
-
getDocComment
返回元素的文档(“Javadoc”)注释的文本。元素的文档注释是以“
/**”开头,以单独的“*/”结尾,紧接在元素之前的注释,忽略空格。因此,文档注释至少包含三个“*”字符。为文档注释返回的文本是源代码中出现的注释的处理形式。删除前导“/**”和尾随“*/”。对于在初始“/**”之后开始的注释行,前导空白字符将被丢弃,因为出现在空白之后或开始该行的任何连续“*”字符也是如此。然后将处理后的行连接在一起(包括行终止符)并返回。- 参数:
e- 正在检查的元素- 返回:
-
元素的文档注释,如果没有则为
null - 看Java 语言规范:
-
3.6 空白
-
isDeprecated
如果该元素已弃用,则返回true,否则返回false。- 参数:
e- 正在检查的元素- 返回:
true如果该元素已弃用,false否则
-
getOrigin
返回给定元素的 origin。请注意,如果此方法返回
EXPLICIT并且该元素是从类文件创建的,那么该元素实际上可能不对应于源代码中显式声明的构造。这是由于类文件格式在保留源代码信息方面的保真度的限制。例如,至少某些版本的类文件格式不保留构造函数是由程序员显式声明还是隐式声明为 default constructor 。- 实现要求:
-
此方法的默认实现返回
EXPLICIT。 - 参数:
e- 正在检查的元素- 返回:
- 给定元素的 origin
- 自从:
- 9
-
getOrigin
返回给定注释镜像的origin。注释镜像是强制的,如果它是隐式声明的container annotation,用于保存可重复注释接口的重复注释。请注意,如果此方法返回
EXPLICIT并且注释镜像是从类文件创建的,那么该元素实际上可能不对应于源代码中显式声明的构造。这是由于类文件格式在保留源代码信息方面的保真度的限制。例如,至少某些版本的类文件格式不保留注释是由程序员显式声明还是隐式声明为 container annotation 。- 实现要求:
-
此方法的默认实现返回
EXPLICIT。 - 参数:
c- 注释镜像修改的构造a- 正在检查的注释镜像- 返回:
- 给定注释镜像的origin
- 看Java 语言规范:
-
9.6.3 可重复的注解接口
9.7.5 同一接口的多个注解
- 自从:
- 9
-
getOrigin
返回给定模块指令的 origin。请注意,如果此方法返回
EXPLICIT并且模块指令是从类文件创建的,那么模块指令实际上可能不对应于源代码中显式声明的构造。这是由于类文件格式在保留源代码信息方面的保真度的限制。例如,至少某些版本的类文件格式不保留uses指令是由程序员显式声明还是作为合成构造添加的。请注意,如果指令是从类文件创建的,则实现可能无法可靠地确定指令的原始状态,因为类文件格式在保留源代码信息方面的保真度受到限制。
- 实现要求:
-
此方法的默认实现返回
EXPLICIT。 - 参数:
m- 指令的模块directive- 正在检查的模块指令- 返回:
- 给定模块指令的 origin
- 自从:
- 9
-
isBridge
如果可执行元素是桥接方法,则返回true,否则返回false。- 实现要求:
-
此方法的默认实现返回
false。 - 参数:
e- 正在检查的可执行文件- 返回:
true如果可执行元素是桥接方法,false否则- 自从:
- 9
-
getBinaryName
返回二进制名称类型元素。- 参数:
type- 正在检查的类型元素- 返回:
- 这二进制名称类型元素
- 看Java 语言规范:
-
13.1 二进制形式
- 参见:
-
getPackageOf
- 参数:
e- 正在检查的元素- 返回:
- 元素的封装
-
getModuleOf
返回元素的模块。模块的模块就是它自己。如果一个包有一个模块作为它的 封闭元素 ,那个模块就是包的模块。如果包的封闭元素是null,则包的模块返回null。 (一个包可能有null模块的一种情况是如果环境不包含模块,例如为没有模块的源版本配置的注解处理环境。)否则,一个元素的模块等于该元素的模块包 .- 实现要求:
-
此方法的默认实现返回
null。 - 参数:
e- 正在检查的元素- 返回:
- 元素的模块
- 自从:
- 9
-
getAllMembers
返回类型元素的所有成员,无论是继承的还是直接声明的。对于一个类,结果还包括它的构造方法,但不包括本地类或匿名类。- API 注意:
-
可以使用
ElementFilter中的方法隔离某些种类的元素。 - 参数:
type- 正在检查的类型- 返回:
- 该类型的所有成员
- 参见:
-
getOutermostTypeElement
如果存在这样的包含元素,则返回包含该元素的最外层类型元素;否则返回null。 模块 和 packages do not 具有包含类型元素,因此为这些类型的元素返回null。 顶层 类或接口是它自己的最外层类型元素。- 实现要求:
-
此方法的默认实现首先检查参数的类型。对于种类为
PACKAGE、MODULE和OTHER的元素,返回null。对于其他类型的元素,将检查该元素以查看它是否是顶级类或接口。如果是,则返回该元素;否则,将遵循 封闭元素 链,直到找到顶级类或接口。返回最终顶级类或接口的元素。 - 参数:
e- 正在检查的元素- 返回:
-
如果存在这样的包含元素,则元素包含在最外层类型元素中;否则返回
null - 自从:
- 18
- 参见:
-
getAllAnnotationMirrors
返回所有注释展示在元素上,无论是直接存在还是通过继承存在。请注意,此方法返回的任何注释都是声明注解。
- 参数:
e- 正在检查的元素- 返回:
- 元素的所有注释
- 参见:
-
hides
测试一种类型、方法或字段是否隐藏了另一种类型、方法或字段。- 参数:
hider- 第一个元素hidden- 第二个元素- 返回:
true当且仅当第一个元素隐藏第二个时- 看Java 语言规范:
-
8.4.8 继承、覆盖和隐藏
-
overrides
测试一个方法是否作为给定类或接口的成员重写另一个方法。当一个非抽象方法重写一个抽象方法时,前者也被称为实施后者。正如 JLS 8.4.8.1 所暗示的,方法确实 not 覆盖了自身。覆盖关系是反身的.在最简单和最典型的用法中,
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.mm2 = ...; // B.massert ! 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当且仅当第一个方法覆盖第二个- 看Java 语言规范:
-
8.4.8 继承、覆盖和隐藏
9.4.1 继承与覆盖
-
getConstantExpression
返回 a 的文本常量表达式表示原始值或字符串。返回的文本采用适合表示源代码中的值的形式。- 参数:
value- 原始值或字符串- 返回:
- 常量表达式的文本
- 抛出:
IllegalArgumentException- 如果参数不是原始值或字符串- 参见:
-
printElements
按指定顺序将元素的表示形式打印到给定的编写器。该方法的主要目的是用于诊断。输出的确切格式是 not 指定的,并且可能会发生变化。- 参数:
w- 将输出打印到的编写器elements- 要打印的元素
-
getName
返回与参数具有相同字符序列的名称。- 参数:
cs- 作为名称返回的字符序列- 返回:
- 与参数具有相同字符序列的名称
-
isFunctionalInterface
如果类型元素是功能接口,则返回true,否则返回false。- 参数:
type- 正在检查的类型元素- 返回:
true如果类型元素是功能接口,false否则- 看Java 语言规范:
-
9.8 功能接口
- 自从:
- 1.8
-
isAutomaticModule
如果模块元素是自动模块,则返回true,否则返回false。- 实现要求:
-
此方法的默认实现返回
false。 - 参数:
module- 正在检查的模块元素- 返回:
true如果模块元素是一个自动模块,false否则- 看Java 语言规范:
-
7.7.1 依赖关系
- 自从:
- 17
-
recordComponentFor
返回给定访问器的记录组件。如果给定方法不是记录组件访问器,则返回null。- 实现要求:
-
此方法的默认实现检查包含访问器的元素是否具有种类
RECORD如果是这种情况,则通过调用ElementFilter.recordComponentsIn(Iterable)检索访问器包含元素上的所有记录组件。如果检索到的至少一个记录组件的访问器恰好等于作为参数传递给此方法的访问器,则返回该记录组件,在任何其他情况下返回null。 - 参数:
accessor- 应为其找到记录组件的方法。- 返回:
-
记录组件,或者
null如果给定方法不是记录组件访问器 - 自从:
- 16
-
isCanonicalConstructor
如果可以确定可执行元素是记录的规范构造函数,则返回true,否则返回false。请注意,在某些情况下,可能没有足够的信息来确定构造函数是否是规范构造函数,例如可执行元素是否由类文件构建。在这种情况下,返回false。- 实现要求:
-
此方法的默认实现无条件返回
false。 - 参数:
e- 正在检查的可执行文件- 返回:
true如果可以确定可执行元素是记录的规范构造函数,false否则- 看Java 语言规范:
-
8.10.4.1 正常规范构造函数
- 自从:
- 20
-
isCompactConstructor
如果可以确定可执行元素是记录的紧凑构造函数,则返回true,否则返回false。根据定义,紧凑构造函数也是 规范构造器 。请注意,在某些情况下,可能没有足够的信息来确定构造函数是否为紧凑构造函数,例如可执行元素是否由类文件构建。在这种情况下,返回false。- 实现要求:
-
此方法的默认实现无条件返回
false。 - 参数:
e- 正在检查的可执行文件- 返回:
true如果可以确定可执行元素是记录的紧凑构造函数,false否则- 看Java 语言规范:
-
8.10.4.2 紧凑规范构造函数
- 自从:
- 20
-
getFileObjectOf
返回此元素的文件对象,如果没有这样的文件对象,则返回null。返回的文件对象是用于构造元素的信息的参考表示。例如,如果在编译或注释处理期间,类
Foo的源文件被编译成类文件,则为表示Foo的元素返回的文件对象将用于源文件,not 用于类文件。实现可以选择不支持此方法的功能,在这种情况下会抛出
UnsupportedOperationException。在注释处理的上下文中,如果元素作为初始输入的一部分包含在内,或者包含文件是在注释处理工具运行期间创建的,则返回一个非
null值。否则,可能会返回null。在注释处理中,如果是 类文件被创建 ,则该类文件可以作为元素的引用表示。如果它有一个文件对象,则包的文件对象将是一个
package-info文件。一个包可能存在并且没有任何package-info文件,即使该包是在注释处理运行期间(隐式地)创建的,从该包中的源文件或类文件的创建运行。 未命名包 将有一个null文件,因为它不能在编译单元中声明。如果它有一个文件对象,模块的文件对象将是一个
module-info文件。 未命名模块 将有一个null文件,因为它不能在编译单元中声明。 自动模块 将有一个null文件,因为它是隐式声明的。如果它有文件对象,则顶级
public类或接口的文件对象将是与该类或接口对应的源文件或类文件。在这种情况下,文件名的前导部分通常与类或接口的名称相匹配。单个编译单元可以定义多个顶级类和接口,例如名称与文件名对应的主要public类或接口以及名称与文件名不对应的一个或多个auxiliary类或接口。如果源文件提供辅助类或接口的引用表示,则返回主类的文件。 (辅助类或接口也可以在package-info源文件中定义,在这种情况下返回package-info文件的文件。)如果类文件提供辅助类或接口的引用表示,则单独的类文件用于返回辅助类。对于嵌套类或接口,如果它有一个文件对象:
- 如果源文件提供引用表示,则文件对象将是最外层类或接口的对象
- 如果类文件提供引用表示,则文件对象将是嵌套类或接口本身的对象
对于其他词法封闭元素,如 variables 、 方法和构造函数 ,如果它们有文件对象,则文件对象将是与词法封闭元素的 封闭元素 关联的对象。
- 实现要求:
-
默认实现无条件抛出
UnsupportedOperationException。 - 参数:
e- 为其查找文件对象的元素- 返回:
-
此元素的文件对象或
null如果没有这样的文件对象 - 抛出:
UnsupportedOperationException- 如果不支持此功能- 自从:
- 18
-