public interface Element
表示一个程序元素,比如包、类或者方法。每个元素都表示一个静态的语言级构造(不表示虚拟机的运行时构造)。
元素应该使用 equals(Object)
方法进行比较。不保证总是使用相同的对象表示某个特定的元素。
要实现基于 Element
对象类的操作,可以使用 visitor 或者使用 getKind()
方法的结果。使用 instanceof
确定此建模层次结构中某一对象的有效类 未必 可靠,因为一个实现可以选择让单个对象实现多个 Element
子接口。
Elements
,
TypeMirror
方法摘要 | ||
---|---|---|
|
accept(ElementVisitor<R,P> v, P p) 将一个 visitor 应用到此元素。 |
|
TypeMirror |
asType() 返回此元素定义的类型。 |
|
boolean |
equals(Object obj) 如果参数表示与 此元素 相同的元素,则返回 true ;否则返回 false 。 |
|
|
getAnnotation(Class<A> annotationType) 返回此元素针对指定类型的注释(如果存在这样的注释),否则返回 null 。 |
|
List<? extends AnnotationMirror> |
getAnnotationMirrors() 返回直接存在于此元素上的注释。 |
|
List<? extends Element> |
getEnclosedElements() 返回此元素直接封装(非严格意义上)的元素。 |
|
Element |
getEnclosingElement() 返回封装此元素(非严格意义上)的最里层元素。 |
|
ElementKind |
getKind() 返回此元素的 类型 。 |
|
Set<Modifier> |
getModifiers() 返回此元素的修饰符,不包括注释。 |
|
Name |
getSimpleName() 返回此元素的简单(未限定)名称。 |
|
int |
hashCode() 遵守 Object.hashCode 的常规协定。 |
方法详细信息 |
---|
TypeMirror asType()
一般元素会定义一个类型系列,而不是只定义一个类型。如果此元素是一般元素,则返回原型 类型。此方法是元素在对应于它自己的形式类型参数的类型变量上的调用。例如,对于一般类元素 C<N extends Number>
,返回参数化类型 C<N>
。Types
实用工具接口有更多的一般方法来获取某一元素定义的整个范围的类型。
Types
ElementKind getKind()
类型
。
List<? extends AnnotationMirror> getAnnotationMirrors()
要获得继承的注释,可使用 getAllAnnotationMirrors
。
ElementFilter
<A extends Annotation> A getAnnotation(Class<A> annotationType)
null
。注释可以是继承的,也可以是直接存在于此元素上的。
此方法返回的注释可以包含其值类型为 Class
的元素。此值无法直接返回:查找并加载某个类的必要信息(比如要使用的类加载器)不可用,该类可能根本无法加载。试图通过对所返回的注释调用相关方法读取 Class
对象将导致一个 MirroredTypeException
,从中可以提取相应的 TypeMirror
。类似地,试图读取一个值为 Class[]
的元素将导致 MirroredTypesException
。
注: 此方法与此接口及相关接口中的那些方法不同。它对运行时反射信息(当前已加载到 VM 中的注释类型的表示形式)进行操作,而不是对通过这些接口定义和使用的表示形式进行操作。因此,调用返回注释对象上的方法可能会抛出许多异常,这些异常在调用核心反射所返回的注释对象上的方法时抛出。此方法由被编写为对已知的固定注释类型集上进行操作的调用者使用。
A
- 注释类型
annotationType
- 对应于注释类型的
Class
对象
null
getAnnotationMirrors()
,
AnnotatedElement.getAnnotation(java.lang.Class
)
,
EnumConstantNotPresentException
,
AnnotationTypeMismatchException
,
IncompleteAnnotationException
,
MirroredTypeException
,
MirroredTypesException
Set<Modifier> getModifiers()
public
和
static
修饰符。
Name getSimpleName()
java.util.Set<E>
的简单名称是
"Set"
。如果此元素表示一个未指定的包,则返回一个空名称。如果它表示一个构造方法,则返回名称 "
<init>
"。如果它表示一个静态初始化程序,则返回名称 "
<clinit>
"。如果它表示一个匿名类或者实例初始化程序,则返回一个空名称。
Element getEnclosingElement()
null
。 null
。
null
Elements.getPackageOf(javax.lang.model.element.Element)
List<? extends Element> getEnclosedElements()
values
和
valueOf
方法。 包封装位于其中的顶层类和接口,但不认为它封装了子包。 当前不认为其他种类的元素封装了任何元素;但是,随着此 API 或编程语言的发展,这种情况可能发生改变。
注意,使用 ElementFilter
中的方法可以隔离某一种类的元素。
Elements.getAllMembers(javax.lang.model.element.TypeElement)
boolean equals(Object obj)
此元素
相同的元素,则返回
true
;否则返回
false
。
注意,元素的身份包括无法直接从元素方法获得的隐式状态,包括反映无关类型存在性的状态。这些接口的不同实现所创建的元素对象不 应该是相等的,即使将为“相同的”元素建模;这正如通过不同类加载器加载的相同类文件的 Class
对象是不相等的。
obj
- 将与此元素进行比较的对象
true
Object.hashCode()
,
Hashtable
int hashCode()
Object.hashCode
的常规协定。
equals(java.lang.Object)
<R,P> R accept(ElementVisitor<R,P> v, P p)
R
- visitor 的方法的返回类型
P
- visitor 的方法的附加参数类型
v
- 对此元素进行操作的 visitor
p
- visitor 的附加参数