JavaTM 2 Platform
Standard Ed. 6

軟體套件 org.omg.DynamicAny

提供一些類別和介面使得在運行時能夠遍歷與 any 有關聯的資料值,並提取資料值的基本成分。

請參見:
          描述

介面摘要
DynAny 通過 DynAny 物件可以動態解釋(遍歷)和建構 Any 值。
DynAnyFactory DynAny 物件可以通過調用 DynAnyFactory 物件上的操作來創建。
DynAnyFactoryOperations DynAny 物件可以通過調用 DynAnyFactory 物件上的操作來創建。
DynAnyOperations 通過 DynAny 物件可以動態解釋(遍歷)和建構 Any 值。
DynArray DynArray 物件支持對 IDL 陣列的操作。
DynArrayOperations DynArray 物件支持對 IDL 陣列的操作。
DynEnum DynEnum 物件支持對 IDL 列舉值的操作。
DynEnumOperations DynEnum 物件支持對 IDL enumerated value 的操作。
DynFixed DynFixed 物件支持對 IDL 定值 (fixed value) 的操作。
DynFixedOperations DynFixed 物件支持對 IDL 定值的操作。
DynSequence DynSequence 物件支持對 IDL 序列的操作。
DynSequenceOperations DynSequence 物件支持對 IDL 序列的操作。
DynStruct DynStruct 物件支持對 IDL 結構資料 (struct) 和異常值的操作。
DynStructOperations DynStruct 物件支持對 IDL 結構資料 (struct) 和異常 (exception) 值的操作。
DynUnion DynUnion 物件支持對 IDL 聯合 (union) 的操作。
DynUnionOperations DynUnion 物件支持對 IDL 聯合資料 (union) 的操作。
DynValue DynValue 物件支持對 IDL 非裝箱 (non-boxed) 值型別的操作。
DynValueBox DynValueBox 物件支持對 IDL 裝箱 (boxed) 型別的操作。
DynValueBoxOperations DynValueBox 物件支持對 IDL 裝箱 (boxed) 型別的操作。
DynValueCommon DynValueCommon 提供 DynValue 和 DynValueBox 介面都支持的操作。
DynValueCommonOperations DynValueCommon 提供 DynValue 和 DynValueBox 介面都支持的操作。
DynValueOperations DynValue 物件支持對 IDL 非裝箱 (boxed) 值型別的支持。
 

類別摘要
_DynAnyFactoryStub DynAny 物件可以通過調用 DynAnyFactory 物件上的操作來創建。
_DynAnyStub 通過 DynAny 物件可以動態解釋(遍歷)和建構 Any 值。
_DynArrayStub DynArray 物件支持對 IDL 陣列 (array) 的操作。
_DynEnumStub DynEnum 物件支持對 IDL 列舉 (enumerated) 值的操作。
_DynFixedStub DynEnum 物件支持對 IDL 定值 (fixed value) 的操作。
_DynSequenceStub DynSequence 物件支持對 IDL 序列 (sequence) 的操作。
_DynStructStub DynStruct 物件支持對 IDL 結構資料 (struct) 和異常值的操作。
_DynUnionStub DynUnion 物件支持對 IDL 聯合資料 (union) 的操作。
_DynValueStub DynValue 物件支持 IDL non-boxed value 型別的操作。
AnySeqHelper org/omg/DynamicAny/AnySeqHelper.java。
DynAnyFactoryHelper DynAny 物件可以通過調用 DynAnyFactory 物件上的操作來創建。
DynAnyHelper 通過 DynAny 物件可以動態解釋(遍歷)和建構 Any 值。
DynAnySeqHelper org/omg/DynamicAny/DynAnySeqHelper.java。
DynArrayHelper DynArray 物件支持對 IDL 陣列的操作。
DynEnumHelper DynEnum 物件支持對 IDL 列舉值的操作。
DynFixedHelper DynFixed 物件支持對 IDL 定值 (fixed value) 的操作。
DynSequenceHelper DynSequence 物件支持對 IDL 序列的操作。
DynStructHelper DynStruct 物件支持對 IDL 結構資料 (struct) 和異常值的操作。
DynUnionHelper DynUnion 物件支持對 IDL 聯合資料 (union) 的操作。
DynValueHelper DynValue 物件支持對 IDL 非裝箱 (non-boxed) 值型別的操作。
FieldNameHelper org/omg/DynamicAny/FieldNameHelper.java。
NameDynAnyPair org/omg/DynamicAny/NameDynAnyPair.java。
NameDynAnyPairHelper org/omg/DynamicAny/NameDynAnyPairHelper.java。
NameDynAnyPairSeqHelper org/omg/DynamicAny/NameDynAnyPairSeqHelper.java。
NameValuePair org/omg/DynamicAny/NameValuePair.java。
NameValuePairHelper org/omg/DynamicAny/NameValuePairHelper.java。
NameValuePairSeqHelper org/omg/DynamicAny/NameValuePairSeqHelper.java。
 

軟體套件 org.omg.DynamicAny 的描述

提供一些類別和介面使得在運行時能夠遍歷與 any 有關聯的資料值,並提取資料值的基本成分。

可以將 any 傳遞給不具有任何有關 any 型別的靜態資訊的程序(由 IDL 編譯器產生的該型別程式碼沒有經過物件實作的編譯)。結果,接收 any 的物件不具有使用它的可移植方法。

DynAny 允許在運行時遍歷與 any 有關聯的資料值,並提取資料值的基本成分。它在編寫功能強大的常規伺服器程序(支持過濾的橋樑、事件通道)時非常有用。類似地,此設施允許在運行時建構 any,無需具備其型別的靜態知識。它在編寫常規客戶端程序(橋樑、瀏覽器、使用者介面工具)時非常有用。

Any 值可以通過 DynAny 物件進行動態解釋(遍歷)和建構。DynAny 物件與對應於插入 Any 的值的副本的資料值相關聯。DynAny 物件可視為 DynAny 元件的有序集合。對於表示基本型別(如 long)或不具有元件的型別(如空異常)的 DynAny,元件的有序集合為空。

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

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

已建構的 DynAny 物件是與建構型別關聯的 DynAny 物件。還有一種從 DynAny 介面繼承而來的介面,它與 IDL 中的每種建構型別(fixed、enum、struct、sequence、union、array、exception 和 value 型別)相關聯。已建構的 DynAny 物件導出支持創建新 DynAny 物件的操作,每個物件都與已建構資料值的元件相關聯。例如,DynStructstruct 值相關聯。這意味著 DynStruct 可視為擁有一個有序的元件集合,每個結構成員一個。DynStruct 物件導出支持創建新 DynAny 物件的操作,其中每個物件都與 struct 的成員有關聯。

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

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

處理 DynAny 物件

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

基本操作包括:

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

套件規範

有關 Java[tm] Platform, Standard Edition 6 ORB 遵守的官方規範的受支持部分的明確列表,請參閱 Official Specifications for CORBA support in Java[tm] SE 6

從以下版本開始:
1.4

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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