所有类


org.omg.CORBA
类 TypeCode

java.lang.Object
  继承者 org.omg.CORBA.TypeCode
所有已实现的接口:
Serializable, IDLEntity

public abstract class TypeCode
   
   
   
   
extends Object
implements IDLEntity

用于有关特定 CORBA 数据类型的信息的容器。

TypeCode 对象的作用包括:

  • 在动态调用接口 (Dynamic Invocation Interface) 中,用于指示实际参数的类型或返回值的类型。
    NamedValue 对象用于表示参数和返回值。其中有一个组件是 Any 对象,该 Any 对象又有一个 TypeCode 对象作为其组件之一。
  • 由接口存储库 (Interface Repository) 用来表示作为许多 OMG IDL 声明一部分的类型说明。

TypeCode 对象的表示形式是不透明的,从理论上说,TypeCode 对象由以下内容组成:

  • 一个 kind 字段,它被设置为 TCKind 类的一个实例
  • 0 个或多个适用于特定种类的附加字段。例如,描述 OMG IDL 类型 1ongTypeCode 对象所具有的种类为 TCKind.tk_long,没有附加字段。描述 OMG IDL 类型 sequence<boolean, 10>TypeCode 具有一个值为 TCKind.tk_sequencekind 字段,以及值为 boolean10(用于序列元素的类型和序列的长度)的字段。

可以通过以下各种方式获得 TypeCode 对象:
  1. 通过调用 Any.insert_X 方法,其中 X 为基本 IDL 类型。此方法为类型 X 创建 TypeCode 对象,并将其分配给 Any 对象的 type 字段。
  2. 通过调用 ORB 类中的方法

    例如,以下代码为 string(最长为 30 个字符)创建 TypeCode

       org.omg.CORBA.TypeCode tcString = orb.create_string_tc(30);
     

    以下代码为由五个 string 组成的 array 创建 TypeCode 对象:

       org.omg.CORBA.TypeCode tcArray = orb.create_array_tc(
                                           5, TCKind.tk_string);
     

    以下代码为名为 "Account" 的接口创建 TypeCode 对象:

       org.omg.CORBA.TypeCode tcInterface = orb.create_interface_tc(
                                                     "thisId", "Account");
     
  3. 作为用于用户定义 IDL 类型的 Holder 类中 _type 方法的返回值。这些 Holder 类由 idltojava 编译器生成。
  4. 从 CORBA 接口存储库中获取

TypeCode 类中的大多数方法都是访问方法,包含在 TypeCode 对象中的信息是特定于特定类型的。所以,必须只在所应用类型代码的种类上调用这些方法。如果访问方法试图从不适当类型代码种类中访问信息,则将抛出异常 TypeCodePackage.BadKind。例如,如果在 union 以外的其他种类上调用 discriminator_type 方法,则将抛出 BadKind 异常,因为只有 union 具有鉴别符 (discriminator)。以下列表展示将哪些方法应用到哪些类型代码种类:

以下方法可以在所有 TypeCode 种类上调用:

  • equal
  • kind

以下方法可以在 objrefstructunionenumaliasexceptionvaluevalue_boxnativeabstract_interface 上调用:

  • id
  • name

以下方法可以在 structunionenumexception 上调用:

  • member_count
  • member_name

以下方法可以在 structunionexception 上调用:

  • member_type(int index)

以下方法可以在 union 上调用:

  • member_label
  • discriminator_type
  • default_index

以下方法可以在 stringsequencearray 上调用:

  • length

以下方法可以在 aliassequencearrayvalue_box 上调用:

  • content_type

与其他 CORBA 伪对象不同,TypeCode 对象可以作为一般 IDL 参数传递。

不推荐使用 parameterparam_count 方法,所以未映射。

Java IDL 扩展了 CORBA 规范,以允许能在 structTypeCode 上执行的所有操作同样能在 exceptionTypeCode 上执行。


构造方法摘要
TypeCode()
           
 
方法摘要
abstract  TypeCodeconcrete_base_type()
          返回一个 TypeCode 对象,它描述此 TypeCode 对象所描述 value 类型的具体基本类型。
abstract  TypeCodecontent_type()
          返回表示此 TypeCode 对象所描述成员 IDL 类型的 TypeCode 对象。
abstract  intdefault_index()
          返回默认成员的索引,如果没有默认成员,则返回 -1。
abstract  TypeCodediscriminator_type()
          返回描述所有非默认成员标签的 TypeCode 对象。
abstract  booleanequal(TypeCode tc)
          将此 TypeCode 对象与给定对象比较,测试它们是否相等。
abstract  booleanequivalent(TypeCode tc)
          测试给定 TypeCode 对象是否等于此 TypeCode 对象。
abstract  shortfixed_digits()
          返回此 TypeCode 对象所描述的 fixed 类型中数字的数量。
abstract  shortfixed_scale()
          返回此 TypeCode 对象所描述的 fixed 类型的标度。
abstract  TypeCodeget_compact_typecode()
          剔除所有可选名称和成员名称字段,但使所有别名 typecode 保留原样。
abstract  Stringid()
          检索全局标识此 TypeCode 对象类型的 RepositoryId。
abstract  TCKindkind()
          检索此 TypeCode 对象的种类。
abstract  intlength()
          返回此 TypeCode 对象所描述类型中的成员数。
abstract  intmember_count()
          检索此 TypeCode 对象所描述类型中的成员数。
abstract  Anymember_label(int index)
          检索给定索引标识的 union 成员的标签。
abstract  Stringmember_name(int index)
          检索给定索引标识的成员的简单名称。
abstract  TypeCodemember_type(int index)
          检索一个 TypeCode 对象,它描述给定索引所标识成员的类型。
abstract  shortmember_visibility(int index)
          返回一个常量,它指示位于给定索引处的成员的可见性。
abstract  Stringname()
          在 TypeCode 对象的封闭作用域内检索标识此对象的简单名称。
abstract  shorttype_modifier()
          返回一个常量,它指示此 TypeCode 对象所描述的 value 类型的修饰符。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

TypeCode

public TypeCode()
方法详细信息

equal

public abstract boolean equal(TypeCode tc)
将此 TypeCode 对象与给定对象比较,测试它们是否相等。如果两个 TypeCode 对象可以互换并在对它们应用 TypeCode 操作时返回相同的结果,则这两个对象相等。

参数:
tc - 要与之比较的 TypeCode 对象
返回:
如果类型代码相同,则返回 true;否则返回 false

equivalent

public abstract boolean equivalent(TypeCode tc)
测试给定 TypeCode 对象是否等于此 TypeCode 对象。

参数:
tc - 将与此 typecode 比较的 typecode
返回:
如果给定 typecode 等于此 typecode,则返回 true;否则返回 false

get_compact_typecode

public abstract TypeCode get_compact_typecode()
剔除所有可选名称和成员名称字段,但使所有别名 typecode 保留原样。

返回:
一个 TypeCode 对象,已剔除可选名称和成员名称字段,但别名 typecode 保持不变
另请参见:
CORBA 包中有关未实现特性的注释

kind

public abstract TCKind kind()
检索此 TypeCode 对象的种类。代码类型的种类可确定哪些 TypeCode 方法可以合法地在该种类之上进行调用。

kind 方法可以在任何 TypeCode 对象上调用。

返回:
指示此 TypeCode 对象 kind 字段值的 TCKind 实例

id

public abstract String id()
                   throws BadKind
检索全局标识此 TypeCode 对象类型的 RepositoryId。

id 方法可以在 object reference、structure、union、enumeration、alias、exception、valuetype、boxed valuetype、native 和 abstract interface 类型代码上调用。object reference、exception、valuetype、boxed valuetype、native 和 abstract interface TypeCode 对象总是有一个 RepositoryId。从接口存储库 (Interface Repository) 或方法 ORB.create_operation_list 中获得的 structure、union、enumeration 和 alias TypeCode 对象也总是有一个 RepositoryId。如果没有 RepositoryId,则该方法可以返回一个空字符串。

返回:
TypeCode 对象的 RepositoryId,如果没有 RepositoryID,则返回一个空字符串
抛出:
BadKind - 如果在不适当的 TypeCode 对象种类上调用该方法

name

public abstract String name()
                     throws BadKind
TypeCode 对象的封闭作用域内检索标识此对象的简单名称。因为这些名称对于 Repository 而言是本地的,所以从 TypeCode 对象返回的名称可能与任何特定 Repository 中的类型名称不匹配,甚至可能是一个空字符串。

name 方法可以在 object reference、structure、union、enumeration、alias、exception、valuetype、boxed valuetype、native 和 abstract interface TypeCode 对象上调用。

返回:
标识此 TypeCode 对象的名称或一个空字符串
抛出:
BadKind - 如果在不适当的 TypeCode 对象种类上调用该方法

member_count

public abstract int member_count()
                          throws BadKind
检索此 TypeCode 对象所描述类型中的成员数。

member_count 方法可以在 structure、union 和 enumeration TypeCode 对象上调用。Java IDL 扩展了 CORBA 规范,允许此方法在异常上进行操作。

返回:
组成此 TypeCode 对象所描述类型的成员数
抛出:
BadKind - 如果在不适当的 TypeCode 对象种类上调用该方法