|
JavaTM 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 Platform Standard Ed. 6 |
|||||||||
| 上一个软件包 下一个软件包 | 框架 无框架 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。