JavaTM 2 Platform
Standard Ed. 6

javax.lang.model.element
介面 Element

所有已知子介面:
ExecutableElement, PackageElement, TypeElement, TypeParameterElement, VariableElement

public interface Element

表示一個程序元素,比如包、類別或者方法。每個元素都表示一個靜態的語言級建構(不表示虛擬機器的運行時建構)。

元素應該使用 equals(Object) 方法進行比較。不保證總是使用相同的物件表示某個特定的元素。

要實作基於 Element 物件類別的操作,可以使用 visitor 或者使用 getKind() 方法的結果。使用 instanceof 確定此建模層次結構中某一物件的有效類別 未必 可靠,因為一個實作可以選擇讓單個物件實作多個 Element 子介面。

從以下版本開始:
1.6
另請參見:
Elements, TypeMirror

方法摘要
<R,P> R
accept(ElementVisitor<R,P> v, P p)
          將一個 visitor 應用到此元素。
 TypeMirror asType()
          返回此元素定義的型別。
 boolean equals(Object obj)
          如果參數表示與此元素相同的元素,則返回 true;否則返回 false
<A extends Annotation>
A
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 的常規協定。
 

方法詳細資訊

asType

TypeMirror asType()
返回此元素定義的型別。

一般元素會定義一個型別系列,而不是只定義一個型別。如果此元素是一般元素,則返回原型 型別。此方法是元素在對應於它自己的形式型別參數的型別變數上的調用。例如,對於一般類別元素 C<N extends Number>,返回參數化型別 C<N>Types 實用工具介面有更多的一般方法來獲取某一元素定義的整個範圍的型別。

返回:
此元素定義的型別
另請參見:
Types

getKind

ElementKind getKind()
返回此元素的型別

返回:
此元素的型別

getAnnotationMirrors

List<? extends AnnotationMirror> getAnnotationMirrors()
返回直接存在於此元素上的註釋。

要獲得繼承的註釋,可使用 getAllAnnotationMirrors

返回:
直接存在於此元素上的註釋;如果沒有,則返回一個空列表
另請參見:
ElementFilter

getAnnotation

<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

getModifiers

Set<Modifier> getModifiers()
返回此元素的修飾符,不包括註釋。但包括顯式修飾符,比如介面成員的 publicstatic 修飾符。

返回:
此元素的修飾符;如果沒有,則返回一個空集

getSimpleName

Name getSimpleName()
返回此元素的簡單(未限定)名稱。一般型別的名稱不包括對其形式型別參數的任何參考。例如,型別元素 java.util.Set<E> 的簡單名稱是 "Set"。如果此元素表示一個未指定的套件,則返回一個空名稱。如果它表示一個建構子,則返回名稱 "<init>"。如果它表示一個靜態初始化程序,則返回名稱 "<clinit>"。如果它表示一個匿名類別或者實例初始化程序,則返回一個空名稱。

返回:
此元素的簡單名稱

getEnclosingElement

Element getEnclosingElement()
返回封裝此元素(非嚴格意義上)的最裡層元素。

返回:
封裝元素;如果沒有,則返回 null
另請參見:
Elements.getPackageOf(javax.lang.model.element.Element)

getEnclosedElements

List<? extends Element> getEnclosedElements()
返回此元素直接封裝(非嚴格意義上)的元素。 類別或介面被認為用於封裝它直接宣告的欄位、方法、建構子和成員型別。這包括所有(隱式)預設建構子和列舉型別的隱式 valuesvalueOf 方法。 包封裝位於其中的頂層類別和介面,但不認為它封裝了子套件。 當前不認為其他種類別的元素封裝了任何元素;但是,隨著此 API 或程式語言的發展,這種情況可能發生改變。

注意,使用 ElementFilter 中的方法可以隔離某一種類別的元素。

返回:
封裝的元素;如果沒有,則返回一個空列表
另請參見:
Elements.getAllMembers(javax.lang.model.element.TypeElement)

equals

boolean equals(Object obj)
如果參數表示與此元素相同的元素,則返回 true;否則返回 false

注意,元素的身份包括無法直接從元素方法獲得的隱式狀態,包括反映無關型別存在性的狀態。這些介面的不同實作所創建的元素物件 應該是相等的,即使將為“相同的”元素建模;這正如通過不同類別載入器載入的相同類別檔案的 Class 物件是不相等的。

覆寫:
類別 Object 中的 equals
參數:
obj - 將與此元素進行比較的物件
返回:
如果指定物件表示與此元素相同的元素,則返回 true
另請參見:
Object.hashCode(), Hashtable

hashCode

int hashCode()
遵守 Object.hashCode 的常規協定。

覆寫:
類別 Object 中的 hashCode
返回:
此物件的一個雜湊碼值。
另請參見:
equals(java.lang.Object)

accept

<R,P> R accept(ElementVisitor<R,P> v,
               P p)
將一個 visitor 應用到此元素。

型別參數:
R - visitor 的方法的返回型別
P - visitor 的方法的附加參數型別
參數:
v - 對此元素進行操作的 visitor
p - visitor 的附加參數
返回:
特定於 visitor 的結果

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only