模块 java.compiler

包 javax.lang.model.element


javax.lang.model.element
用于对 Java 编程语言的元素建模的接口。此包中的术语“元素”用于指代程序元素,即构成程序的已声明实体。元素包括类、接口、方法、构造函数和字段。此包中的接口不对方法体内的程序结构进行建模;例如,没有 for 循环或 try -finally 块的表示。但是,接口可以模拟一些仅出现在方法体内的结构,例如局部变量和匿名类。

当在注释处理的上下文中使用时,必须返回所表示元素的准确模型。由于这是一个语言模型,源代码提供了所讨论构造的基准(参考)表示,而不是像类文件这样的可执行输出中的表示。可执行输出可以作为创建建模元素的基础。然而,将源代码转换为可执行输出的过程可能不允许恢复源代码表示的某些方面。例如,无法从类文件中恢复带有 source 保留 的注释,并且类文件可能无法提供源位置信息。 parameters 的名称可能无法从类文件中恢复。从类文件创建的元素上的 modifiers 在某些情况下可能不同于从源文件创建的相同声明的元素,包括:

  • strictfp 在类或接口上
  • final 在一个参数上
  • protectedprivatestatic 在类和接口上
从类文件创建时,某些 强制的 元素可能不会被标记为此类。此外,类文件中的 合成的 构造(例如用于实现嵌套类的访问器方法和用于实现协变返回的 桥梁方法 )是严格在此模型之外的翻译工件。但是,在对类文件进行操作时,能够对这些元素进行操作并在适当的时候将它们筛选出来是很有帮助的。

在标注处理过程中,需要对不完整或错误的程序进行操作;但是,对最终模型的性质的保证较少。如果源代码的语法结构不正确,或者有一些其他无法通过生成新类或接口消除的不可恢复的错误,则可能会或可能不会提供模型作为实现质量问题。如果一个类或接口的程序在语法上是有效的,但在其他方面是错误的,那么任何返回的模型所包含的信息必须不少于程序中所有方法体都被 "throw new RuntimeException();" 替换的信息。如果程序引用缺失的类或接口 Xyz,则返回的模型包含的信息必须不少于假设类或接口 Xyz 的声明为 "class Xyz {}""interface Xyz {}""enum Xyz {}""@interface Xyz {}" "record Xyz {}" 的信息。如果程序引用缺少的类或接口 Xyz<K1, ... ,Kn> ,则返回的模型包含的信息必须不少于假定 Xyz 声明为 "class Xyz<T1, ... ,Tn> {}""interface Xyz<T1, ... ,Tn> {}" 的信息

除非在特定实现中另有规定,否则此包中的方法返回的集合应该被调用者不可修改并且对于并发访问是不安全的。

除非另有说明,如果给定 null 参数,此包中的方法将抛出 NullPointerException

Java 语言规范:
6.1 声明
7.4 包装声明
7.7 模块声明
8.1 类声明
8.3 字段声明
8.4 方法声明
8.5 成员类和接口声明
8.8 构造函数声明
9.1 接口声明
自从:
1.6
参见: