Module  java.compiler

Package javax.lang.model.element

用于建模Java编程语言元素的接口。 该包中的术语“元素”用于指程序元素,构成程序的声明实体。 元素包括类,接口,方法,构造函数和字段。 该包中的接口不会对方法体内的程序的结构建模; 例如没有for循环或try - finally块的表示。 但是,这些接口可以建立一些仅显示在方法体内的结构,例如局部变量和匿名类。

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

  • strictfp在类或接口上
  • final上的一个参数
  • protectedprivate ,并static的类和接口
mandated的某些元素在从类文件创建时可能不会被标记为这样。 另外,类文件中的synthetic构造,例如用于实现嵌套类的访问器方法和用于实现协变返回的bridge methods ,是严格在该模型之外的翻译工件。 但是,当对类文件进行操作时,可以对这些元素进行操作,在适当的时候进行筛选。

在注解处理过程中,需要对不完整或错误的程序进行操作; 然而,关于结果模型的性质的担保较少。 如果源代码在语法上没有格式化,或者有一些其他不可恢复的错误,不能通过生成新的类型来删除,则可能提供或不提供模型作为实现质量问题。 如果一个程序在语法上是有效的,但是以某种其他方式是错误的,那么任何返回的模型都不能少于程序中的所有方法体被"throw new RuntimeException();"替换的"throw new RuntimeException();" 如果一个程序是指缺少类型xyz,则返回模型必须包含不超过若类型XYZ三个声明被假定为是较少的信息"class Xyz {}""interface Xyz {}""enum Xyz {}" ,或"@interface Xyz {}" 如果程序引用了一个缺少的类型Xyz<K1, ... ,Kn> ,则返回的模型必须包含的信息不少于"class Xyz<T1, ... ,Tn> {}"的声明假定为"class Xyz<T1, ... ,Tn> {}""interface Xyz<T1, ... ,Tn> {}"

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

除非另有说明,如果给出了null参数,则该包中的方法将抛出一个NullPointerException

从以下版本开始:
1.6