JavaTM 2 Platform
Standard Ed. 6

javax.lang.model.util
介面 Types


public interface Types

用來對型別進行操作的實用工具方法。

相容性注意事項: 在將來的平臺版本中可能會向此介面添加一些方法。

從以下版本開始:
1.6
另請參見:
ProcessingEnvironment.getTypeUtils()

方法摘要
 Element asElement(TypeMirror t)
          返回對應於型別的元素。
 TypeMirror asMemberOf(DeclaredType containing, Element element)
          當元素被視為給定型別的成員或者直接由給定型別包含時,返回該元素的型別。
 TypeElement boxedClass(PrimitiveType p)
          返回給定基本型別的裝箱 (boxed) 值型別的類別。
 TypeMirror capture(TypeMirror t)
          對型別應用 capture 轉換。
 boolean contains(TypeMirror t1, TypeMirror t2)
          測試一個型別參數是否包含 另一個型別參數。
 List<? extends TypeMirror> directSupertypes(TypeMirror t)
          返回型別的直接父級類別型。
 TypeMirror erasure(TypeMirror t)
          返回刪除狀態的型別。
 ArrayType getArrayType(TypeMirror componentType)
          返回具有指定元件型別的陣列型別。
 DeclaredType getDeclaredType(DeclaredType containing, TypeElement typeElem, TypeMirror... typeArgs)
          根據給定的包含型別,返回對應於型別元素和實際型別參數的型別(它是給定包含型別的成員)。
 DeclaredType getDeclaredType(TypeElement typeElem, TypeMirror... typeArgs)
          返回對應於型別元素和實際型別參數的型別。
 NoType getNoType(TypeKind kind)
          返回在實際型別不適用的地方所使用的偽型別。
 NullType getNullType()
          返回 null 型別。
 PrimitiveType getPrimitiveType(TypeKind kind)
          返回基本型別。
 WildcardType getWildcardType(TypeMirror extendsBound, TypeMirror superBound)
          返回新的通配符型別參數。
 boolean isAssignable(TypeMirror t1, TypeMirror t2)
          測試一種型別是否可以指派給另一種型別。
 boolean isSameType(TypeMirror t1, TypeMirror t2)
          測試兩個 TypeMirror 物件是否表示同一型別。
 boolean isSubsignature(ExecutableType m1, ExecutableType m2)
          測試一個方法的簽章是否是另一個方法的子簽章
 boolean isSubtype(TypeMirror t1, TypeMirror t2)
          測試一種型別是否是另一個型別的子型別。
 PrimitiveType unboxedType(TypeMirror t)
          返回給定型別的拆箱 (unboxed) 值型別(基本型別)。
 

方法詳細資訊

asElement

Element asElement(TypeMirror t)
返回對應於型別的元素。該型別可能是 DeclaredTypeTypeVariable。如果該型別沒有對應元素,則返回 null

返回:
對應於給定型別的元素

isSameType

boolean isSameType(TypeMirror t1,
                   TypeMirror t2)
測試兩個 TypeMirror 物件是否表示同一型別。

警告:如果此方法兩個參數中有一個表示通配符,那麼此方法將返回 false。因此,通配符與其本身的型別不同。初看起來這可能讓人感到很奇怪,但考慮到編譯器一定會拒絕以下範例時,這就很合理了:

 
List<?> list = new ArrayList<Object>();
list.add(list.get(0));
 

參數:
t1 - 第一種型別
t2 - 第二種型別
返回:
當且僅當兩種型別相同時返回 true

isSubtype

boolean isSubtype(TypeMirror t1,
                  TypeMirror t2)
測試一種型別是否是另一個型別的子型別。任何型別都被認為是其本身的子型別。

參數:
t1 - 第一種型別
t2 - 第二種型別
返回:
當且僅當第一種型別是第二種型別的子型別時返回 true
拋出:
IllegalArgumentException - 如果給定一個 executable 或 package 型別

isAssignable

boolean isAssignable(TypeMirror t1,
                     TypeMirror t2)
測試一種型別是否可以指派給另一種型別。

參數:
t1 - 第一種型別
t2 - 第二種型別
返回:
當且僅當第一種型別可以指派給第二種型別時返回 true
拋出:
IllegalArgumentException - 如果給定一個 executable 或 package 型別

contains

boolean contains(TypeMirror t1,
                 TypeMirror t2)
測試一個型別參數是否包含 另一個型別參數。

參數:
t1 - 第一種型別
t2 - 第二種型別
返回:
當且僅當第一種型別包含第二種型別時返回 true
拋出:
IllegalArgumentException - 如果給定一個 executable 或 package 型別

isSubsignature

boolean isSubsignature(ExecutableType m1,
                       ExecutableType m2)
測試一個方法的簽章是否是另一個方法的子簽章

參數:
m1 - 第一個方法
m2 - 第二個方法
返回:
當且僅當第一個簽章是第二個簽章的子簽章時返回 true

directSupertypes

List<? extends TypeMirror> directSupertypes(TypeMirror t)
返回型別的直接父級類別型。interface 型別將出現在列表的最後(如果有)。

參數:
t - 將被檢查的型別
返回:
直接父級類別型;如果沒有,則返回一個空列表
拋出:
IllegalArgumentException - 如果給定一個 executable 或 package 型別

erasure

TypeMirror erasure(TypeMirror t)
返回刪除狀態的型別。

參數:
t - 要刪除的型別
返回:
刪除狀態的給定型別
拋出:
IllegalArgumentException - 如果給定一個 package 型別

boxedClass

TypeElement boxedClass(PrimitiveType p)
返回給定基本型別的裝箱 (boxed) 值型別的類別。即應用 boxing 轉換

參數:
p - 要轉換的基本型別
返回:
型別 p 的裝箱值型別的類別

unboxedType

PrimitiveType unboxedType(TypeMirror t)
返回給定型別的拆箱 (unboxed) 值型別(基本型別)。即應用 unboxing 轉換

參數:
t - 要拆箱的型別
返回:
型別 t 的拆箱值型別
拋出:
IllegalArgumentException - 如果給定型別無法進行 unboxing 轉換

capture

TypeMirror capture(TypeMirror t)
對型別應用 capture 轉換。

參數:
t - 要轉換的型別
返回:
應用 capture 轉換的結果
拋出:
IllegalArgumentException - 如果給定 executable 或 package 型別

getPrimitiveType

PrimitiveType getPrimitiveType(TypeKind kind)
返回基本型別。

參數:
kind - 要返回的基本型別的種類別
返回:
一個基本型別
拋出:
IllegalArgumentException - 如果 kind 不是基本種類別

getNullType

NullType getNullType()
返回 null 型別。該型別是 null 的型別。

返回:
null 型別

getNoType

NoType getNoType(TypeKind kind)
返回在實際型別不適用的地方所使用的偽型別。要返回的型別的種類別可以是 VOIDNONE。對於包,可以使用 Elements.getPackageElement(CharSequence).asType() 替代。

參數:
kind - 要返回的型別的種類別
返回:
種類別 VOIDNONE 的偽型別
拋出:
IllegalArgumentException - 如果 kind 無效

getArrayType

ArrayType getArrayType(TypeMirror componentType)
返回具有指定元件型別的陣列型別。

參數:
componentType - 元件型別
返回:
具有指定元件型別的陣列型別。
拋出:
IllegalArgumentException - 如果元件型別對於陣列無效

getWildcardType

WildcardType getWildcardType(TypeMirror extendsBound,
                             TypeMirror superBound)
返回新的通配符型別參數。可以指定通配符邊界中的一個,也可以都不指定,但不能都指定。

參數:
extendsBound - 擴展(上)邊界;如果沒有,則該參數為 null
superBound - 超(下)邊界;如果沒有,則該參數為 null
返回:
新的通配符
拋出:
IllegalArgumentException - 如果邊界無效

getDeclaredType

DeclaredType getDeclaredType(TypeElement typeElem,
                             TypeMirror... typeArgs)
返回對應於型別元素和實際型別參數的型別。例如,如果給定 Set 的型別元素和 String 的型別鏡像,那麼可以使用此方法獲取參數化型別 Set<String>

型別參數的數量必須等於型別元素的形式型別參數的數量,或者等於 0。如果等於 0,並且型別元素是泛型,則返回該型別元素的原始型別。

如果返回一個參數化型別,則其型別元素不得包含在一般外部類別中。例如,首先使用此方法獲取型別 Outer<String>,然後調用 getDeclaredType(DeclaredType, TypeElement, TypeMirror...),可以建構參數化型別 Outer<String>.Inner<Number>

參數:
typeElem - 型別元素
typeArgs - 實際型別參數
返回:
對應於型別元素和實際型別參數的型別
拋出:
IllegalArgumentException - 如果給定的型別參數太多或太少,或者提供不合適的型別參數或型別元素

getDeclaredType

DeclaredType getDeclaredType(DeclaredType containing,
                             TypeElement typeElem,
                             TypeMirror... typeArgs)
根據給定的包含型別,返回對應於型別元素和實際型別參數的型別(它是給定包含型別的成員)。例如,通過首先使用 getDeclaredType(TypeElement, TypeMirror...) 獲取型別 Outer<String>,然後調用此方法,可以建構參數化型別 Outer<String>.Inner<Number>

如果包含型別是一個參數化型別,則型別參數的數量必須等於 typeElem 的形式型別參數的數量。如果包含型別不是參數化的,或者為 null,則此方法等效於 getDeclaredType(typeElem, typeArgs)

參數:
containing - 套件含型別;如果沒有,則該參數為 null
typeElem - 型別元素
typeArgs - 實際型別參數
返回:
對應於型別元素和實際型別參數的型別,該型別包含在給定型別中
拋出:
IllegalArgumentException - 如果給定的型別參數太多或太少,或者提供了不合適的型別參數、型別元素或包含型別

asMemberOf

TypeMirror asMemberOf(DeclaredType containing,
                      Element element)
當元素被視為給定型別的成員或者直接由給定型別包含時,返回該元素的型別。例如,被視為參數化型別 Set<String> 的成員時,Set.add 方法是參數型別為 StringExecutableType

參數:
containing - 套件含型別
element - 元素
返回:
從套件含型別來看的元素的型別
拋出:
IllegalArgumentException - 如果元素對於給定型別無效

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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