- 所有超接口:
-
AnnotatedConstruct
- 所有已知子接口:
-
ExecutableElement
,ModuleElement
,PackageElement
,Parameterizable
,QualifiedNameable
,RecordComponentElement
,TypeElement
,TypeParameterElement
,VariableElement
代表程序元素,如模块、包、类或方法。每个元素代表一个编译时语言级别的构造(而不是虚拟机的运行时构造)。
应使用equals(Object)
方法来比较元素。不能保证任何特定元素始终由相同的对象表示。
要根据Element
对象的类实现基于操作,可以使用visitor或使用getKind()
方法的结果。在此建模层次结构中,使用instanceof
不一定是一种可靠的习语,用于确定对象的有效类,因为实现可能选择使单个对象实现多个Element
子接口。
- 自 JDK 版本:
- 1.6
- 另请参阅:
-
Method Summary
Modifier and TypeMethodDescription<R,
P> R accept
(ElementVisitor<R, P> v, P p) 对此元素应用访问者。asType()
返回此元素定义的类型。boolean
如果参数表示与this
相同的元素,则返回true
,否则返回false
。<A extends Annotation>
AgetAnnotation
(Class<A> annotationType) 如果存在指定类型的注解,则返回此构造的该注解,否则返回null
。List
<? extends AnnotationMirror> 返回直接存在于此构造上的注解。<A extends Annotation>
A[]getAnnotationsByType
(Class<A> annotationType) 返回与此构造关联的注解。返回松散地说,直接由此元素包含的元素。返回最内层的元素,该元素松散地包含此元素。getKind()
返回此元素的kind
。返回此元素的修饰符,不包括注解。返回此元素的简单(未限定)名称。int
hashCode()
遵守Object.hashCode
的一般契约。
-
Method Details
-
asType
TypeMirror asType()返回此元素定义的类型。 -
getKind
ElementKind getKind()返回此元素的kind
。- 包的种类是
PACKAGE
。 - 模块的种类是
MODULE
。 - 类型元素的种类是
ANNOTATION_TYPE
、CLASS
、ENUM
、INTERFACE
或RECORD
之一。 - 变量的种类是
ENUM_CONSTANT
、EXCEPTION_PARAMETER
、FIELD
、LOCAL_VARIABLE
、PARAMETER
、RESOURCE_VARIABLE
或BINDING_VARIABLE
之一。 - 可执行元素的种类是
CONSTRUCTOR
、INSTANCE_INIT
、METHOD
或STATIC_INIT
之一。 - 类型参数的种类是
TYPE_PARAMETER
。 - 记录组件的种类是
RECORD_COMPONENT
。
- 返回:
-
此元素的
kind
- 包的种类是
-
getModifiers
- 返回:
- 此元素的修饰符,如果没有则返回空集
-
getSimpleName
Name getSimpleName()返回此元素的简单(未限定)名称。泛型类或接口的名称不包括对其形式类型参数的任何引用。例如,表示java.util.Set<E>
的类型元素的简单名称是"Set"
。如果此元素表示未命名的包、未命名的模块或未命名的变量,则返回一个空名称。如果它表示一个构造函数,则返回名称"<init>
"。如果它表示一个静态初始化程序,则返回名称"<clinit>
"。如果它表示一个匿名类或实例初始化程序,则返回一个空名称。- 返回:
- 此元素的简单(未限定)名称
- 另请参阅:
-
getEnclosingElement
Element getEnclosingElement()返回最内层的元素,该元素松散地包含此元素。- 返回:
-
包含此元素的元素,如果没有则返回
null
- 另请参阅:
-
getEnclosedElements
返回直接包含在此元素中的元素。一个类或接口被认为包含它直接声明的字段、方法、构造函数、记录组件以及成员类和接口。一个包包含其中的顶层类和接口,但不被认为包含子包。一个模块包含其中的包。包含的元素可能包括隐式声明的强制元素。其他类型的元素目前不被认为包含任何元素;然而,随着此API或编程语言的发展,情况可能会改变。- API 注释:
-
某些类型的元素可以使用
ElementFilter
中的方法进行隔离。 - 返回:
- 包含的元素,如果没有则返回空列表
- 参见 Java 语言规范:
-
8.8.9 默认构造函数
8.9 枚举类
8.10 记录类
- 参见:
-
equals
如果参数表示与this
相同的元素,则返回true
,否则返回false
。 -
hashCode
int hashCode()遵守Object.hashCode
的一般契约。 -
getAnnotationMirrors
List<? extends AnnotationMirror> getAnnotationMirrors()返回直接存在在此构造上的注解。要获取继承的注解,可以使用
getAllAnnotationMirrors
。请注意,此方法返回的任何注解都是声明注解。
- 指定者:
-
getAnnotationMirrors
在接口AnnotatedConstruct
中 - 返回:
- 直接存在在此构造上的注解;如果没有则返回空列表
- 自:
- 1.6
-
getAnnotation
如果存在指定类型的注解,则返回此构造的注解,否则返回null
。此方法返回的注解可能包含一个值为
Class
类型的元素。这个值无法直接返回:用于定位和加载类的信息(例如要使用的类加载器)不可用,并且该类可能根本无法加载。尝试通过调用返回的注解上的相关方法来读取Class
对象将导致MirroredTypeException
,从中可以提取相应的TypeMirror
。类似地,尝试读取一个Class[]
值元素将导致MirroredTypesException
。注意: 此方法与此接口及相关接口中的其他方法不同。它操作运行时反射信息 —— 当前加载到VM中的注解接口的表示 —— 而不是这些接口中定义和使用的表示。因此,调用返回的注解对象上的方法可能会抛出许多在核心反射中调用返回的注解对象上的方法时可能抛出的异常。此方法适用于编写为操作已知、固定注解接口集的调用者。
请注意,此方法返回的任何注解都是声明注解。
- 指定者:
-
getAnnotation
在接口AnnotatedConstruct
中 - 类型参数:
-
A
- 注解接口 - 参数:
-
annotationType
- 对应于注解接口的Class
对象 - 返回:
-
如果存在指定类型的注解,则返回此构造的注解,否则返回
null
- 自:
- 1.6
- 参见:
-
getAnnotationsByType
返回与此构造关联的注解。如果没有与此构造关联的注解,则返回长度为0的数组。直接或间接存在于构造C上的注解的顺序被计算为如果在容器注解的值元素中间接存在的注解在C上直接存在,则以它们在容器注解的值元素中出现的顺序。此方法与AnnotatedConstruct.getAnnotation(Class)
之间的区别在于,此方法检测其参数是否为可重复注解接口,如果是,则尝试通过“查找”容器注解来找到一个或多个该类型的注解。此方法返回的注解可能包含一个值为
Class
类型的元素。这个值无法直接返回:用于定位和加载类的信息(例如要使用的类加载器)不可用,并且该类可能根本无法加载。尝试通过调用返回的注解上的相关方法来读取Class
对象将导致MirroredTypeException
,从中可以提取相应的TypeMirror
。类似地,尝试读取一个Class[]
值元素将导致MirroredTypesException
。注意: 此方法与此接口及相关接口中的其他方法不同。它操作运行时反射信息 —— 当前加载到VM中的注解接口的表示 —— 而不是这些接口中定义和使用的表示。因此,调用返回的注解对象上的方法可能会抛出许多在核心反射中调用返回的注解对象上的方法时可能抛出的异常。此方法适用于编写为操作已知、固定注解接口集的调用者。
请注意,此方法返回的任何注解都是声明注解。
- 指定者:
-
getAnnotationsByType
在接口AnnotatedConstruct
中 - 类型参数:
-
A
- 注解接口 - 参数:
-
annotationType
- 对应于注解接口的Class
对象 - 返回值:
- 如果在此构造上存在指定的注解类型的注解,则返回此构造的注解,否则返回一个空数组
- 自版本:
- 1.8
- 参见:
-
accept
对此元素应用访问者。- 类型参数:
-
R
- 访问者方法的返回类型 -
P
- 访问者方法的附加参数类型 - 参数:
-
v
- 操作此元素的访问者 -
p
- 访问者的附加参数 - 返回值:
- 访问者指定的结果
-