JavaTM 2 Platform
Standard Ed. 6

org.omg.CORBA
類別 TypeCode

java.lang.Object
  繼承者 org.omg.CORBA.TypeCode
所有已實作的介面:
Serializable, IDLEntity

public abstract class TypeCode
extends Object
implements IDLEntity

用於有關特定 CORBA 資料型別的資訊的容器。

TypeCode 物件的作用包括:

TypeCode 物件的表示形式是不透明的,從理論上說,TypeCode 物件由以下內容組成:

可以通過以下各種方式獲得 TypeCode 物件:
  1. 通過調用 Any.insert_X 方法,其中 X 為基本 IDL 型別。此方法為型別 X 創建 TypeCode 物件,並將其分派給 Any 物件的 type 欄位。
  2. 通過調用 ORB 類別中的方法

    例如,以下程式碼為 string(最長為 30 個字元)創建 TypeCode

       org.omg.CORBA.TypeCode tcString = orb.create_string_tc(30);
     

    以下程式碼為由五個 string 組成的 array 創建 TypeCode 物件:

       org.omg.CORBA.TypeCode tcArray = orb.create_array_tc(
                                           5, TCKind.tk_string);
     

    以下程式碼為名為 "Account" 的介面創建 TypeCode 物件:

       org.omg.CORBA.TypeCode tcInterface = orb.create_interface_tc(
                                                     "thisId", "Account");
     
  3. 作為用於使用者定義 IDL 型別的 Holder 類別中 _type 方法的返回值。這些 Holder 類別由 idltojava 編譯器產生。
  4. 從 CORBA 介面存儲資源庫中獲取

TypeCode 類別中的大多數方法都是存取方法,包含在 TypeCode 物件中的資訊是特定於特定型別的。所以,必須只在所應用型別程式碼的種類別上調用這些方法。如果存取方法試圖從不適當型別程式碼種類別中存取資訊,則將拋出異常 TypeCodePackage.BadKind。例如,如果在 union 以外的其他種類別上調用 discriminator_type 方法,則將拋出 BadKind 異常,因為只有 union 具有鑒別符 (discriminator)。以下列表展示將哪些方法應用到哪些型別程式碼種類別:

以下方法可以在所有 TypeCode 種類別上調用:

以下方法可以在 objrefstructunionenumaliasexceptionvaluevalue_boxnativeabstract_interface 上調用:

以下方法可以在 structunionenumexception 上調用:

以下方法可以在 structunionexception 上調用:

以下方法可以在 union 上調用:

以下方法可以在 stringsequencearray 上調用:

以下方法可以在 aliassequencearrayvalue_box 上調用:

與其他 CORBA 偽物件不同,TypeCode 物件可以作為一般 IDL 參數傳遞。

不推薦使用 parameterparam_count 方法,所以未映射。

Java IDL 擴展了 CORBA 規範,以允許能在 struct TypeCode 上執行的所有操作同樣能在 exception TypeCode 上執行。


建構子摘要
TypeCode()
           
 
方法摘要
abstract  TypeCode concrete_base_type()
          返回一個 TypeCode 物件,它描述此 TypeCode 物件所描述 value 型別的具體基本型別。
abstract  TypeCode content_type()
          返回表示此 TypeCode 物件所描述成員 IDL 型別的 TypeCode 物件。
abstract  int default_index()
          返回預設成員的索引,如果沒有預設成員,則返回 -1。
abstract  TypeCode discriminator_type()
          返回描述所有非預設成員標籤的 TypeCode 物件。
abstract  boolean equal(TypeCode tc)
          將此 TypeCode 物件與給定物件比較,測試它們是否相等。
abstract  boolean equivalent(TypeCode tc)
          測試給定 TypeCode 物件是否等於此 TypeCode 物件。
abstract  short fixed_digits()
          返回此 TypeCode 物件所描述的 fixed 型別中數字的數量。
abstract  short fixed_scale()
          返回此 TypeCode 物件所描述的 fixed 型別的標度。
abstract  TypeCode get_compact_typecode()
          剔除所有可選名稱和成員名稱欄位,但使所有別名 typecode 保留原樣。
abstract  String id()
          檢索全體標識此 TypeCode 物件型別的 RepositoryId。
abstract  TCKind kind()
          檢索此 TypeCode 物件的種類別。
abstract  int length()
          返回此 TypeCode 物件所描述型別中的成員數。
abstract  int member_count()
          檢索此 TypeCode 物件所描述型別中的成員數。
abstract  Any member_label(int index)
          檢索給定索引標識的 union 成員的標籤。
abstract  String member_name(int index)
          檢索給定索引標識的成員的簡單名稱。
abstract  TypeCode member_type(int index)
          檢索一個 TypeCode 物件,它描述給定索引所標識成員的型別。
abstract  short member_visibility(int index)
          返回一個常數,它指示位於給定索引處的成員的可見性。
abstract  String name()
          在 TypeCode 物件的封閉作用域內檢索標識此物件的簡單名稱。
abstract  short type_modifier()
          返回一個常數,它指示此 TypeCode 物件所描述的 value 型別的修飾符。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

TypeCode

public TypeCode()
方法詳細資訊

equal

public abstract boolean equal(TypeCode tc)
將此 TypeCode 物件與給定物件比較,測試它們是否相等。如果兩個 TypeCode 物件可以互換並在對它們應用 TypeCode 操作時返回相同的結果,則這兩個物件相等。

參數:
tc - 要與之比較的 TypeCode 物件
返回:
如果型別程式碼相同,則返回 true;否則返回 false

equivalent

public abstract boolean equivalent(TypeCode tc)
測試給定 TypeCode 物件是否等於此 TypeCode 物件。

參數:
tc - 將與此 typecode 比較的 typecode
返回:
如果給定 typecode 等於此 typecode,則返回 true;否則返回 false

get_compact_typecode

public abstract TypeCode get_compact_typecode()
剔除所有可選名稱和成員名稱欄位,但使所有別名 typecode 保留原樣。

返回:
一個 TypeCode 物件,已剔除可選名稱和成員名稱欄位,但別名 typecode 保持不變
另請參見:
CORBA 套件中有關未實作特性的註釋

kind

public abstract TCKind kind()
檢索此 TypeCode 物件的種類別。程式碼型別的種類別可確定哪些 TypeCode 方法可以合法地在該種類別之上進行調用。

kind 方法可以在任何 TypeCode 物件上調用。

返回:
指示此 TypeCode 物件 kind 欄位值的 TCKind 實例

id

public abstract String id()
                   throws BadKind
檢索全體標識此 TypeCode 物件型別的 RepositoryId。

id 方法可以在 object reference、structure、union、enumeration、alias、exception、valuetype、boxed valuetype、native 和 abstract interface 型別程式碼上調用。object reference、exception、valuetype、boxed valuetype、native 和 abstract interface TypeCode 物件總是有一個 RepositoryId。從介面存儲資源庫 (Interface Repository) 或方法 ORB.create_operation_list 中獲得的 structure、union、enumeration 和 alias TypeCode 物件也總是有一個 RepositoryId。如果沒有 RepositoryId,則該方法可以返回一個空字元串。

返回:
TypeCode 物件的 RepositoryId,如果沒有 RepositoryID,則返回一個空字元串
拋出:
BadKind - 如果在不適當的 TypeCode 物件種類別上調用該方法

name

public abstract String name()
                     throws BadKind
TypeCode 物件的封閉作用域內檢索標識此物件的簡單名稱。因為這些名稱對於 Repository 而言是本地的,所以從 TypeCode 物件返回的名稱可能與任何特定 Repository 中的型別名稱不比對,甚至可能是一個空字元串。

name 方法可以在 object reference、structure、union、enumeration、alias、exception、valuetype、boxed valuetype、native 和 abstract interface TypeCode 物件上調用。

返回:
標識此 TypeCode 物件的名稱或一個空字元串
拋出:
BadKind - 如果在不適當的 TypeCode 物件種類別上調用該方法

member_count

public abstract int member_count()
                          throws BadKind
檢索此 TypeCode 物件所描述型別中的成員數。

member_count 方法可以在 structure、union 和 enumeration TypeCode 物件上調用。Java IDL 擴展了 CORBA 規範,允許此方法在異常上進行操作。

返回:
組成此 TypeCode 物件所描述型別的成員數
拋出:
BadKind - 如果在不適當的 TypeCode 物件種類別上調用該方法

member_name

public abstract String member_name(int index)
                            throws BadKind,
                                   Bounds
檢索給定索引標識的成員的簡單名稱。因為這些名稱對於 Repository 而言是本地的,所以從 TypeCode 物件返回的名稱可能與任何特定 Repository 中的成員名稱不比對,甚至可能是一個空字元串。

可以在 structure、union 和 enumeration TypeCode 物件上調用 member_name 方法。Java IDL 擴展了 CORBA 規範,允許此方法在異常上進行操作。

參數:
index - 請求名稱的成員的索引
返回:
由索引標識的成員的簡單名稱,或者空字元串
拋出:
Bounds - 如果索引大於等於組成該型別的成員數
BadKind - 如果在不適當的 TypeCode 物件種類別上調用該方法

member_type

public abstract TypeCode member_type(int index)
                              throws BadKind,
                                     Bounds
檢索一個 TypeCode 物件,它描述給定索引所標識成員的型別。

member_type 方法可以在 structure 和 union TypeCode 物件上調用。Java IDL 擴展了 CORBA 規範,允許此方法在異常上進行操作。

參數:
index - 開始請求型別資訊的成員的索引
返回:
描述給定索引處成員的 TypeCode 物件
拋出:
Bounds - 如果索引大於等於組成該型別的成員數
BadKind - 如果在不適當的 TypeCode 物件種類別上調用該方法

member_label

public abstract Any member_label(int index)
                          throws BadKind,
                                 Bounds
檢索給定索引標識的 union 成員的標籤。對於預設成員,該標籤是 0 八位組 (zero octet)。

member_label 方法可以在 union TypeCode 物件上調用。

參數:
index - 請求標籤的 union 成員的索引
返回:
描述所請求 union 成員標籤的 Any 物件;對於預設成員,返回 0 八位組
拋出:
Bounds - 如果索引大於等於組成 union 的成員數
BadKind - 如果在非 union TypeCode 物件上調用該方法

discriminator_type

public abstract TypeCode discriminator_type()
                                     throws BadKind
返回描述所有非預設成員標籤的 TypeCode 物件。discriminator_type 方法只能在 union TypeCode 物件上調用。

返回:
描述非預設成員標籤的 TypeCode 物件
拋出:
BadKind - 如果在非 union TypeCode 物件上調用該方法

default_index

public abstract int default_index()
                           throws BadKind
返回預設成員的索引,如果沒有預設成員,則返回 -1。

default_index 方法只能在 union TypeCode 物件上調用。

返回:
預設成員的索引;如果沒有預設成員,則返回 -1
拋出:
BadKind - 如果在非 union TypeCode 物件上調用該方法

length

public abstract int length()
                    throws BadKind
返回此 TypeCode 物件所描述型別中的成員數。對於 string 和 sequence,該方法返回一個範圍,0 指示無界的 string 或 sequence。對於 array,此方法返回其成員數。

length 方法可以在 string、sequence 和 array TypeCode 物件上調用。

返回:
string 和 sequence 的範圍,或者 array 的成員數
拋出:
BadKind - 如果在不適當的 TypeCode 物件種類別上調用該方法

content_type

public abstract TypeCode content_type()
                               throws BadKind
返回表示此 TypeCode 物件所描述成員 IDL 型別的 TypeCode 物件。對於 sequence 和 array,該方法返回元素型別。對於 alias,該方法返回原始型別。注意,多維 array 用巢狀 TypeCode 物件表示,每個維度一個物件。對於 boxed valuetype,該方法返回 boxed 型別。

content_type 方法可以在 sequence、array、alias 和 boxed valuetype TypeCode 物件上調用。

返回:
一個 TypeCode 物件,它對於 sequence 和 array 表示元素型別;對於 alias 表示原始型別;對於 boxed valuetype 表示 boxed 型別。
拋出:
BadKind - 如果在不適當的 TypeCode 物件種類別上調用該方法

fixed_digits

public abstract short fixed_digits()
                            throws BadKind
返回此 TypeCode 物件所描述的 fixed 型別中數字的數量。例如,數字 3000.275d 的 typecode 是 fixed<7,3>,其中 7 是精確度,3 是標度。

返回:
數字的總數
拋出:
BadKind - 如果在不適當的 TypeCode 物件種類別上調用該方法

fixed_scale

public abstract short fixed_scale()
                           throws BadKind
返回此 TypeCode 物件所描述的 fixed 型別的標度。正數指示小數點右邊的數字個數。例如,數字 3000d 的 typecode 是 fixed<4,0>,其中第一個數字是精度,第二個數字是標度。出現負數也是有可能的,在小數點的左邊添加 0 即可。在這種情況下,fixed<1,-3> 是數字 3000d 的 typecode。

返回:
TypeCode 物件所描述 fixed 型別的標度
拋出:
BadKind - 如果在不適當的 TypeCode 物件種類別上調用該方法

member_visibility

public abstract short member_visibility(int index)
                                 throws BadKind,
                                        Bounds
返回一個常數,它指示位於給定索引處的成員的可見性。 此操作只能在非 boxed value TypeCode 物件上調用。

參數:
index - 指示 value 中索引的 int
返回:
PRIVATE_MEMBER.valuePUBLIC_MEMBER.value
拋出:
BadKind - 如果在非 value 型別 TypeCode 物件上調用此方法
Bounds - 如果給定索引超出範圍
另請參見:
CORBA 套件中有關未實作特性的註釋

type_modifier

public abstract short type_modifier()
                             throws BadKind
返回一個常數,它指示此 TypeCode 物件所描述的 value 型別的修飾符。返回的常數必須是以下常數之一:VM_NONE.valueVM_ABSTRACT.valueVM_CUSTOM.valueVM_TRUNCATABLE.value

返回:
描述此 TypeCode 物件所描述 value 型別的常數
拋出:
BadKind - 如果在非 value 型別 TypeCode 物件上調用此方法
另請參見:
CORBA 套件中有關未實作特性的註釋

concrete_base_type

public abstract TypeCode concrete_base_type()
                                     throws BadKind
返回一個 TypeCode 物件,它描述此 TypeCode 物件所描述 value 型別的具體基本型別。如果沒有具體基本型別,則返回 null。

返回:
一個 TypeCode 物件,它描述此 TypeCode 物件所描述 value 型別的具體基本型別
拋出:
BadKind - 如果在非 boxed value 型別 TypeCode 物件上調用此方法
另請參見:
CORBA 套件中有關未實作特性的註釋

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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