|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個軟體套件 下一個軟體套件 | 框架 無框架 | |||||||||
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。 |
提供一些類別和介面使得在運行時能夠遍歷與 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(即不具有值但具有允許元件的 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 異常。
有關 Java[tm] Platform, Standard Edition 6 ORB 遵守的官方規範的受支持部分的明確列表,請參閱 Official Specifications for CORBA support in Java[tm] SE 6。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個軟體套件 下一個軟體套件 | 框架 無框架 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。