org.omg.DynamicAny

接口
java.lang.Object
  继承者 org.omg.CORBA.portable.ObjectImpl
      继承者 org.omg.DynamicAny._DynAnyFactoryStub
所有已实现的接口:
Serializable, Object, IDLEntity, DynAnyFactory, DynAnyFactoryOperations

public class _DynAnyFactoryStub
     
extends ObjectImpl
implements DynAnyFactory

DynAny 对象可以通过调用 DynAnyFactory 对象上的操作来创建。一般来说,只有两种创建 DynAny 对象的方式:

  • 调用现有 DynAny 对象上的操作
  • 调用 DynAnyFactory 对象上的操作
已构造的 DynAny 对象支持允许创建新 DynAny 对象的操作,可在这些对象中封装对某个成分值的访问权限。DynAny 对象还支持用于创建新 DynAny 对象的复制操作。通过调用 ORB.resolve_initial_references() 并将标识符参数设置为字符串常量 "DynAnyFactory",可以获取 DynAnyFactory 对象的引用。

动态解释 any 的第一步通常是使用 create_dyn_any() 创建 DynAny 对象。所得 DynAny 对象引用集中于 DynFixed、DynStruct、DynSequence、DynArray、DynUnion、DynEnum 或 DynValue 这几种对象引用,因 any 的类型而异。

动态创建 any 需要使用 create_dyn_any_from_type_code() 创建 DynAny 对象,并传递与要创建的值关联的 TypeCode。返回的引用将集中为复合类型之一,如 DynStruct(如果合适)。然后,通过在所得对象上调用操作来初始化值。最后,可调用 to_any 操作根据已构造的 DynAny 创建 any 值。


字段摘要
static Class _opsClass
           
 
构造方法摘要
_DynAnyFactoryStub()
           
 
方法摘要
 String[] _ids()
          获得包含此 ObjectImpl 对象所支持的存储库标识符的字符串数组。
 DynAny create_dyn_any_from_type_code(TypeCode type)
          根据 TypeCode 创建 DynAny。
 DynAny create_dyn_any(Any value)
          根据 any 值创建新 DynAny 对象。
 
从类 org.omg.CORBA.portable.ObjectImpl 继承的方法
_create_request, _create_request, _duplicate, _get_delegate, _get_domain_managers, _get_interface_def, _get_policy, _hash, _invoke, _is_a, _is_equivalent, _is_local, _non_existent, _orb, _release, _releaseReply, _request, _request, _servant_postinvoke, _servant_preinvoke, _set_delegate, _set_policy_override, equals, hashCode, toString
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
从接口 org.omg.CORBA.Object 继承的方法
_create_request, _create_request, _duplicate, _get_domain_managers, _get_interface_def, _get_policy, _hash, _is_a, _is_equivalent, _non_existent, _release, _request, _set_policy_override
 

字段详细信息

_opsClass

public static final Class _opsClass
构造方法详细信息

_DynAnyFactoryStub

public _DynAnyFactoryStub()
方法详细信息

create_dyn_any

public DynAny create_dyn_any(Any value)
                      throws InconsistentTypeCode
根据 any 值创建新 DynAny 对象。将与 any 值关联的 TypeCode 的副本分配给所得 DynAny 对象。与 DynAny 对象关联的值是原始 any 中值的副本。如果传递的值具有组件,则将已创建的 DynAny 的当前位置设置为 0;否则设置为 -1。

指定者:
接口 DynAnyFactoryOperations 中的 create_dyn_any
抛出:
InconsistentTypeCode - 如果值具有 TCKind 为 tk_Principal、tk_native 或 tk_abstract_interface 的 TypeCode

create_dyn_any_from_type_code

public DynAny create_dyn_any_from_type_code(TypeCode type)
                                     throws InconsistentTypeCode
根据 TypeCode 创建 DynAny。根据 TypeCode 的不同,创建的对象可能为 DynAny 类型,也可能为其派生类型之一(如 DynStruct)。返回的引用可以集中为派生类型。无论是哪种情况,根据 TypeCode 构造的 DynAny 都具有初始默认值。基本类型的默认值如下:
  • false,用于 boolean
  • 0,用于 numeric 类型
  • 0,用于类型 octet、char 和 wchar
  • 空字符串,用于 string 和 wstring
  • null,用于对象引用
  • 带有 TCKind 值为 tk_null 的类型代码,用于类型代码
  • 包含带有 TCKind 值为 tk_null 的类型代码但不包含任何值的 any,用于 any 值
对于复合类型,创建相应 DynAny 时默认值的分配如下:
  • 对于 DynSequence,它将当前位置设置为 -1 并创建空序列。
  • 对于 DynEnum,它将当前位置设置为 -1,并将计数器 (enumerator) 的值设置为 TypeCode 指示的第一个计数器值。
  • 对于 DynFixed,它将当前位置设置为 -1 并将值设置为 0。
  • 对于 DynStruct,它将空异常的当前位置设置为 -1,所有其他 TypeCode 的当前位置都设置为 0。成员(如果有)将被初始化(递归式)为其默认值。
  • 对于 DynArray,它将当前位置设置为 0 并将元素(递归式)初始化为其默认值。
  • 对于 DynUnion,它将当前位置设置为 0。将鉴别符值设置为与第一个指定的联合成员一致的值。激活该成员并将其(递归式)初始化为默认值。
  • 对于 DynValue 和 DynValueBox,它将初始化为 null 值。

指定者:
接口 DynAnyFactoryOperations 中的 create_dyn_any_from_type_code
抛出:
InconsistentTypeCode

_ids

public String[] _ids()
从类 ObjectImpl 复制的描述
获得包含此 ObjectImpl 对象所支持的存储库标识符的字符串数组。例如,对于 sub,此方法返回所有关于该 stub 所支持的接口的信息。

指定者:
ObjectImpl 中的 _ids
返回:
ObjectImpl 实例支持的所有存储库标识符所组成的数组