Module  java.compiler
软件包  javax.lang.model.util

Interface Elements



  • public interface Elements
    对程序元素进行操作的实用方法。

    兼容性注意:在将来的平台版本中可能会添加到此界面中的方法。

    从以下版本开始:
    1.6
    另请参见:
    ProcessingEnvironment.getElementUtils()
    • 方法详细信息

      • 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 无法找到模块的一种情况是,如果环境不包括模块,例如为没有模块的source version配置的注释处理环境。
        实现要求:
        此方法的默认实现将返回 null
        参数
        name - 的名字
        结果
        命名的模块元素,如果不能找到, null
        从以下版本开始:
        9
        另请参见:
        getAllModuleElements()
      • getAllModuleElements

        default Set<? extends ModuleElement> getAllModuleElements​()
        返回当前环境中的所有模块元素。 如果没有模块,则返回一个空的集合。 当环境不包括模块时,会出现没有模块的情况,例如为没有模块的source version配置的注释处理环境。
        实现要求:
        此方法的默认实现返回一个空集。
        结果
        已知的模块元素,如果没有模块,则为空集
        从以下版本开始:
        9
        另请参见:
        getModuleElement(CharSequence)
      • 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。 一个元素没有模块的情况是,如果环境不包括模块,例如为没有模块的source version配置的注释处理环境。
        实现要求:
        此方法的默认实现将返回 null
        参数
        type - 正在检查的元素
        结果
        元素的模块
        从以下版本开始:
        9
      • getAllMembers

        List<? extends Element> getAllMembers​(TypeElement type)
        返回类型元素的所有成员,无论是继承还是直接声明。 对于类,结果还包括其构造函数,但不包括本地或匿名类。
        API Note:
        某些种类的元素可以使用ElementFilter中的方法进行分离。
        参数
        type - 正在检查的类型
        结果
        所有成员的类型
        另请参见:
        Element.getEnclosedElements()
      • hides

        boolean hides​(Element hider,
                      Element hidden)
        测试一种类型,方法或字段是否隐藏另一种。
        参数
        hider - 第一个元素
        hidden - 第二个元素
        结果
        true当且仅当第一个元素隐藏第二个元素时
      • overrides

        boolean overrides​(ExecutableElement overrider,
                          ExecutableElement overridden,
                          TypeElement type)
        测试一种方法,作为给定类型的成员,覆盖其他方法。 当非抽象方法覆盖抽象方法时,前者也被称为实现后者。

        在最简单和最典型的用法中, type参数的值将简单地是直接包含overrider的类或接口(可能覆盖的方法)。 例如,假设m1表示方法String.hashCodem2表示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功能界面