JavaTM 2 Platform
Standard Ed. 6

org.omg.DynamicAny
介面 DynAnyOperations

所有已知子介面:
DynAny, DynArray, DynArrayOperations, DynEnum, DynEnumOperations, DynFixed, DynFixedOperations, DynSequence, DynSequenceOperations, DynStruct, DynStructOperations, DynUnion, DynUnionOperations, DynValue, DynValueBox, DynValueBoxOperations, DynValueCommon, DynValueCommonOperations, DynValueOperations
所有已知實作類別:
_DynAnyStub, _DynArrayStub, _DynEnumStub, _DynFixedStub, _DynSequenceStub, _DynStructStub, _DynUnionStub, _DynValueStub

public interface DynAnyOperations

通過 DynAny 物件可以動態解釋(遍歷)和建構 Any 值。DynAny 物件與對應於插入 any 的值的副本的資料值相關聯。

DynAny 物件可視為一個有序的 DynAny 元件集合。對於表示基本型別(如 long)或沒有元件的型別(如空異常)的 DynAny,有序的元件集合為空。每個 DynAny 物件在其元件 DynAny 集合中都有一個當前位置。當前位置由 0 到 n-1 的索引值標識,其中 n 為元件數。特殊索引值 -1 指示不指向任何位置的當前位置。對於不能有當前位置的值(如空異常),索引值始終為 -1。如果使用具有元件的值初始化 DynAny,則索引被初始化為 0。在創建未初始化的 DynAny(即不具有值但具有允許元件的 TypeCode 的 DynAny)之後,當前位置取決於由 DynAny 表示的值的型別。(將當前位置設置為 0 還是 -1 取決於新 DynAny 是否獲取了其元件的預設值。)

迭代操作 rewind、seek 和 next 可用於更改當前位置,current_component 操作返回當前位置的元件。component_count 操作返回 DynAny 的元件數。總體上說,這些操作都能在 DynAny 的元件上進行迭代,從而能夠(例如)檢查其內容(遞歸式)。

已建構的 DynAny 物件是與建構型別關聯的 DynAny 物件。還有一種從 DynAny 介面繼承而來的介面,它與 IDL 中的每種建構型別(fixed、enum、struct、sequence、union、array、exception 和 value 型別)相關聯。

已建構的 DynAny 物件導出支持創建新 DynAny 物件的操作,每個物件都與已建構資料值的元件相關聯。例如,DynStruct 與 struct 值關聯。這意味著 DynStruct 可視為擁有一個有序的元件集合,每個結構成員一個。DynStruct 物件導出支持創建新 DynAny 物件的操作,其中每個物件都與 struct 的成員關聯。

如果 DynAny 物件是從另一個(已建構)DynAny 物件獲取的(如表示從 DynStruct 創建的結構成員的 DynAny),則成員 DynAny 在邏輯上包含在 DynStruct 中。調用 insert 或 get 操作不更改當前位置。銷毀頂級 DynAny 物件(不是作為另一個 DynAny 的元件獲取的)將同時銷毀從其獲取的所有 DynAny 物件元件。銷毀非頂級 DynAny 物件的操作沒有任何效果。在已銷毀的頂級 DynAny 或其任何子代上調用操作將引發 OBJECT_NOT_EXIST。如果開發人員要銷毀 DynAny 物件,但還需要操作與其關聯的資料值的某個元件,則應該首先為該元件創建一個 DynAny,然後產生所創建的 DynAny 物件的副本。

為了支持高效實作,根據分派的記憶體空間和存取速度定義 DynAny 物件的行為。DynAny 物件旨在用於遍歷從 any 析取的值,或用於在運行時建構 any 的值。不建議將其用於其他目的。

Insert 和 get 操作是處理基本 DynAny 物件所必需的,但是也可以使用它們來處理已建構的 DynAny 物件。將基本資料型別值插入已建構的 DynAny 物件意味著初始化與 DynAny 物件關聯的已建構資料值的當前元件。例如,對 DynStruct 調用 insert_boolean 意味著在關聯的 struct 資料值的當前位置插入 boolean 資料值。如果某個型別的 TypeCode 等效於 DynAny 中包含的 TypeCode,或者等效於處於當前位置的 DynAny 的 TypeCode(如果 DynAny 具有元件),則該型別與插入值或析取值一致。

DynAny 和 DynAnyFactory 物件對於創建和使用它們的進程而言是本地的。這意味著不能將對 DynAny 和 DynAnyFactory 物件的參考導出到其他進程,也不能通過 ORB.object_to_string() 使其具體化。如果進行這樣的嘗試,則該違反規則的操作將引發 MARSHAL 系統異常。由於它們的介面是在 IDL 中指定的,所以 DynAny 物件導出在標準 org.omg.CORBA.Object 介面中定義的操作。但是,任何嘗試調用通過 Object 介面導出的操作都會引發標準 NO_IMPLEMENT 異常。嘗試使用帶有 DII 的 DynAny 物件將引發 NO_IMPLEMENT 異常。


方法摘要
 void assign(DynAny dyn_any)
          使用與另一個 DynAny 物件有關聯的值初始化與 DynAny 物件有關聯的值。
 int component_count()
          返回 DynAny 的元件數。
 DynAny copy()
          創建一個新 DynAny 物件,其值為調用此方法的 DynAny 的深層複製。
 DynAny current_component()
          返回當前位置上的元件的 DynAny。
 void destroy()
          銷毀 DynAny 物件。
 boolean equal(DynAny dyn_any)
          比較兩個 DynAny 值是否相等。
 void from_any(Any value)
          使用 any 中包含的值初始化與 DynAny 物件有關聯的值。
 Any get_any()
          提取由此 DynAny 表示的 Any 中所包含的 Any 值。
 boolean get_boolean()
          從此 DynAny 中提取 boolean 值。
 char get_char()
          從此 DynAny 中提取 char 值。
 double get_double()
          從此 DynAny 中提取 double 值。
 DynAny get_dyn_any()
          提取由此 DynAny 表示的 Any 中所包含的 Any 值,並將其包裹在新 DynAny 中返回。
 float get_float()
          從此 DynAny 中提取 float 值。
 int get_long()
          從此 DynAny 中提取 integer 值。
 long get_longlong()
          從此 DynAny 中提取 long 值。
 byte get_octet()
          從此 DynAny 中提取 byte 值。
 Object get_reference()
          從此 DynAny 中提取對 CORBA 物件的參考。
 short get_short()
          從此 DynAny 中提取 short 值。
 String get_string()
          從此 DynAny 中提取 string 值。
 TypeCode get_typecode()
          從此 DynAny 中提取 TypeCode 物件。
 int get_ulong()
          從此 DynAny 中提取 integer 值。
 long get_ulonglong()
          從此 DynAny 中提取 long 值。
 short get_ushort()
          從此 DynAny 中提取 short 值。
 Serializable get_val()
          從此 DynAny 中提取 Serializable 物件。
 char get_wchar()
          從此 DynAny 中提取 long 值。
 String get_wstring()
          從此 DynAny 中提取 string 值。
 void insert_any(Any value)
          將 Any 值插入此 DynAny 表示的 Any 中。
 void insert_boolean(boolean value)
          將 boolean 值插入 DynAny 中。
 void insert_char(char value)
          將 char 值插入 DynAny 中。
 void insert_double(double value)
          將 double 值插入 DynAny 中。
 void insert_dyn_any(DynAny value)
          將參數 DynAny 中包含的 Any 值插入此 DynAny 表示的 Any 中。
 void insert_float(float value)
          將 float 值插入 DynAny 中。
 void insert_long(int value)
          將 integer 值插入 DynAny 中。
 void insert_longlong(long value)
          將 long 值插入 DynAny 中。
 void insert_octet(byte value)
          將 byte 值插入 DynAny 中。
 void insert_reference(Object value)
          將對 CORBA 物件的參考插入到 DynAny 中。
 void insert_short(short value)
          將 short 值插入 DynAny 中。
 void insert_string(String value)
          將 string 值插入 DynAny 中。
 void insert_typecode(TypeCode value)
          將 TypeCode 物件插入 DynAny 中。
 void insert_ulong(int value)
          將 integer 值插入 DynAny 中。
 void insert_ulonglong(long value)
          將 long 值插入 DynAny 中。
 void insert_ushort(short value)
          將 short 值插入 DynAny 中。
 void insert_val(Serializable value)
          將對 Serializable 物件的參考插入此 DynAny 中。
 void insert_wchar(char value)
          將 char 值插入 DynAny 中。
 void insert_wstring(String value)
          將 string 值插入 DynAny 中。
 boolean next()
          將當前位置推進到下一個元件。
 void rewind()
          等效於 seek(0)。
 boolean seek(int index)
          將當前位置設置為索引。
 Any to_any()
          從 DynAny 物件創建 any 值。
 TypeCode type()
          返回與此 DynAny 物件有關聯的 TypeCode。
 

方法詳細資訊

type

TypeCode type()
返回與此 DynAny 物件有關聯的 TypeCode。DynAny 物件是通過分派給它的 TypeCode 值創建的。此 TypeCode 值確定通過 DynAny 物件處理的值的型別。注意,與 DynAny 物件關聯的 TypeCode 在創建 DynAny 時初始化,在 DynAny 物件的生存期間不能更改。

返回:
與 DynAny 物件關聯的 TypeCode

assign

void assign(DynAny dyn_any)
            throws TypeMismatch
使用與另一個 DynAny 物件有關聯的值初始化與 DynAny 物件有關聯的值。對具有元件的值,將目標 DynAny 的當前位置設置為 0,對不具有元件的值,將該位置設置為 -1。

參數:
dyn_any -
拋出:
TypeMismatch - 如果傳遞的 DynAny 的型別不等於目標 DynAny 的型別

from_any

void from_any(Any value)
              throws TypeMismatch,
                     InvalidValue
使用 any 中包含的值初始化與 DynAny 物件有關聯的值。對具有元件的值,將目標 DynAny 的當前位置設置為 0,對不具有元件的值,將該位置設置為 -1。

拋出:
TypeMismatch - 如果所傳遞 Any 的型別不等於目標 DynAny 的型別
InvalidValue - 如果所傳遞的 Any 不包含合法值(如 null 字元串)

to_any

Any to_any()
從 DynAny 物件創建 any 值。將與 DynAny 物件關聯的 TypeCode 的副本分派給所得 any。將與 DynAny 物件關聯的值複製到 any 中。

返回:
具有相同值和 TypeCode 的新 Any 物件

equal

boolean equal(DynAny dyn_any)
比較兩個 DynAny 值是否相等。如果兩個 DynAny 值的 TypeCode 相等,則它們的值相等;以此類別推,所有元件 DynAny 都具有相等的值。將比較的兩個 DynAny 的當前位置不影響比較結果。

返回:
如果 DynAny 相等,則返回 true;否則返回 false

destroy

void destroy()
銷毀 DynAny 物件。此操作釋放所有用來表示與 DynAny 物件關聯的資料值的資源。為了避免資源洩漏,此操作必須在從 ORB 介面的創建操作之一獲取的參考或者 DynAny.copy() 返回的參考上調用。在元件 DynAny 物件(例如,current_component 操作返回的物件)上調用 destroy 沒有任何效果。銷毀 DynAny 物件意味著銷毀從其獲取的所有 DynAny 物件。即對已銷毀 DynAny 元件的參考將變得無效。調用這種參考將引發 OBJECT_NOT_EXIST。如果在銷毀可從中獲取元件的 DynAny 前使用 copy 操作產生了元件的復本,則可以在該 DynAny 的生存期後操作其元件。


copy

DynAny copy()
創建一個新 DynAny 物件,其值為調用此方法的 DynAny 的深層複製。該操作是多態的,即對派生自 DynAny 的型別之一(如 DynStruct)調用該操作時,將創建派生的型別,但以 DynAny 基本型別的形式返回其參考。

返回:
DynAny 物件的深層複製

insert_boolean

void insert_boolean(boolean value)
                    throws TypeMismatch,
                           InvalidValue
將 boolean 值插入 DynAny 中。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_octet

void insert_octet(byte value)
                  throws TypeMismatch,
                         InvalidValue
將 byte 值插入 DynAny 中。將 IDL octet 資料型別映射為 Java byte 資料型別。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_char

void insert_char(char value)
                 throws TypeMismatch,
                        InvalidValue
將 char 值插入 DynAny 中。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_short

void insert_short(short value)
                  throws TypeMismatch,
                         InvalidValue
將 short 值插入 DynAny 中。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_ushort

void insert_ushort(short value)
                   throws TypeMismatch,
                          InvalidValue
將 short 值插入 DynAny 中。將 IDL ushort 資料型別映射為 Java short 資料型別。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_long

void insert_long(int value)
                 throws TypeMismatch,
                        InvalidValue
將 integer 值插入 DynAny 中。將 IDL long 資料型別映射為 Java int 資料型別。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_ulong

void insert_ulong(int value)
                  throws TypeMismatch,
                         InvalidValue
將 integer 值插入 DynAny 中。將 IDL ulong 資料型別映射為 Java int 資料型別。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_float

void insert_float(float value)
                  throws TypeMismatch,
                         InvalidValue
將 float 值插入 DynAny 中。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_double

void insert_double(double value)
                   throws TypeMismatch,
                          InvalidValue
將 double 值插入 DynAny 中。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_string

void insert_string(String value)
                   throws TypeMismatch,
                          InvalidValue
將 string 值插入 DynAny 中。有界的和無界的字元串都使用此方法插入。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
InvalidValue - 如果插入的字元串的長度超出有界字元串的界限
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_reference

void insert_reference(Object value)
                      throws TypeMismatch,
                             InvalidValue
將對 CORBA 物件的參考插入到 DynAny 中。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_typecode

void insert_typecode(TypeCode value)
                     throws TypeMismatch,
                            InvalidValue
將 TypeCode 物件插入 DynAny 中。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_longlong

void insert_longlong(long value)
                     throws TypeMismatch,
                            InvalidValue
將 long 值插入 DynAny 中。將 IDL long 資料型別映射為 Java long 資料型別。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_ulonglong

void insert_ulonglong(long value)
                      throws TypeMismatch,
                             InvalidValue
將 long 值插入 DynAny 中。將 IDL 無符號 long 資料型別映射為 Java long 資料型別。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_wchar

void insert_wchar(char value)
                  throws TypeMismatch,
                         InvalidValue
將 char 值插入 DynAny 中。將 IDL wchar 資料型別映射為 Java char 資料型別。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_wstring

void insert_wstring(String value)
                    throws TypeMismatch,
                           InvalidValue
將 string 值插入 DynAny 中。有界的和無界的字元串都使用此方法插入。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
InvalidValue - 如果插入的字元串的長度超出有界字元串的界限
TypeMismatch

insert_any

void insert_any(Any value)
                throws TypeMismatch,
                       InvalidValue
將 Any 值插入此 DynAny 表示的 Any 中。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_dyn_any

void insert_dyn_any(DynAny value)
                    throws TypeMismatch,
                           InvalidValue
將參數 DynAny 中包含的 Any 值插入此 DynAny 表示的 Any 中。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

insert_val

void insert_val(Serializable value)
                throws TypeMismatch,
                       InvalidValue
將對 Serializable 物件的參考插入此 DynAny 中。將 IDL ValueBase 型別映射為 Java Serializable 型別。

拋出:
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法

get_boolean

boolean get_boolean()
                    throws TypeMismatch,
                           InvalidValue
從此 DynAny 中提取 boolean 值。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_octet

byte get_octet()
               throws TypeMismatch,
                      InvalidValue
從此 DynAny 中提取 byte 值。將 IDL octet 資料型別映射為 Java byte 資料型別。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_char

char get_char()
              throws TypeMismatch,
                     InvalidValue
從此 DynAny 中提取 char 值。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_short

short get_short()
                throws TypeMismatch,
                       InvalidValue
從此 DynAny 中提取 short 值。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_ushort

short get_ushort()
                 throws TypeMismatch,
                        InvalidValue
從此 DynAny 中提取 short 值。將 IDL ushort 資料型別映射為 Java short 資料型別。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_long

int get_long()
             throws TypeMismatch,
                    InvalidValue
從此 DynAny 中提取 integer 值。將 IDL long 資料型別映射為 Java int 資料型別。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_ulong

int get_ulong()
              throws TypeMismatch,
                     InvalidValue
從此 DynAny 中提取 integer 值。將 IDL ulong 資料型別映射為 Java int 資料型別。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_float

float get_float()
                throws TypeMismatch,
                       InvalidValue
從此 DynAny 中提取 float 值。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_double

double get_double()
                  throws TypeMismatch,
                         InvalidValue
從此 DynAny 中提取 double 值。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_string

String get_string()
                  throws TypeMismatch,
                         InvalidValue
從此 DynAny 中提取 string 值。有界的和無界的字元串都使用此方法析取。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_reference

Object get_reference()
                     throws TypeMismatch,
                            InvalidValue
從此 DynAny 中提取對 CORBA 物件的參考。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_typecode

TypeCode get_typecode()
                      throws TypeMismatch,
                             InvalidValue
從此 DynAny 中提取 TypeCode 物件。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_longlong

long get_longlong()
                  throws TypeMismatch,
                         InvalidValue
從此 DynAny 中提取 long 值。將 IDL long 資料型別映射為 Java long 資料型別。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_ulonglong

long get_ulonglong()
                   throws TypeMismatch,
                          InvalidValue
從此 DynAny 中提取 long 值。將 IDL 無符號 long 資料型別映射為 Java long 資料型別。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_wchar

char get_wchar()
               throws TypeMismatch,
                      InvalidValue
從此 DynAny 中提取 long 值。將 IDL wchar 資料型別映射為 Java char 資料型別。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_wstring

String get_wstring()
                   throws TypeMismatch,
                          InvalidValue
從此 DynAny 中提取 string 值。有界的和無界的字元串都使用此方法析取。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue

get_any

Any get_any()
            throws TypeMismatch,
                   InvalidValue
提取由此 DynAny 表示的 Any 中所包含的 Any 值。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_dyn_any

DynAny get_dyn_any()
                   throws TypeMismatch,
                          InvalidValue
提取由此 DynAny 表示的 Any 中所包含的 Any 值,並將其包裹在新 DynAny 中返回。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

get_val

Serializable get_val()
                     throws TypeMismatch,
                            InvalidValue
從此 DynAny 中提取 Serializable 物件。將 IDL ValueBase 型別映射為 Java Serializable 型別。

拋出:
TypeMismatch - 如果在 DynAny 中存取的元件型別不等於所請求的型別。
TypeMismatch - 如果在其當前元件本身也有元件的 DynAny 上調用此方法
InvalidValue - 如果此 DynAny 具有元件,但當前位置為 -1

seek

boolean seek(int index)
將當前位置設置為索引。當前位置為索引 0 到 n-1,即索引 0 對應於第一個元件。如果所得當前位置指示 DynAny 的元件,則操作返回 true;如果索引指示的位置不與元件對應,則返回 false。使用負索引調用 seek 是合法的。它將當前位置設置為 -1,指示不存在元件,並返回 false。如果傳遞相應位置上沒有元件的 DynAny 的非負索引值,則會將當前位置設置為 -1 並返回 false。


rewind

void rewind()
等效於 seek(0)。


next

boolean next()
將當前位置推進到下一個元件。如果所得當前位置指示一個元件,則該操作返回 true;否則返回 false。返回值為 false 時當前位置仍為 -1。如果在沒有元件的 DynAny 上調用 next,則當前位置仍為 -1 並返回 false。


component_count

int component_count()
返回 DynAny 的元件數。對於沒有元件的 DynAny,它返回 0。該操作僅計算位於頂層的元件。例如,如果在具有單個成員的 DynStruct 上調用 component_count,則返回值為 1,與成員的型別無關。


current_component

DynAny current_component()
                         throws TypeMismatch
返回當前位置上的元件的 DynAny。它不推進當前位置,所以反覆調用 current_component 且不插入對 rewind、next 或 seek 的調用將返回相同的元件。返回的 DynAny 物件參考可用於獲取/設置當前元件的值。如果當前元件表示復合型別,則可基於 TypeCode 縮小返回參考的範圍以獲取對應於復合型別的介面。在不能有元件的 DynAny(如 DynEnum 或空異常)上調用 current_component 將引發 TypeMismatch。在其當前位置為 -1 的 DynAny 上調用 current_component 將返回 nil 參考。迭代操作和 current_component 都可用於動態組成 any 值。創建動態 any(如 DynStruct)後,current_component 和 next 可用於初始化值的所有元件。一旦完成初始化動態值,to_any 將創建相應的 any 值。

拋出:
TypeMismatch - 如果在不能有元件的 DynAny(如 DynEnum 或空異常)上調用此方法

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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