Module  java.corba
软件包  org.omg.CORBA

Class TypeCode

  • All Implemented Interfaces:
    SerializableIDLEntity


    public abstract class TypeCode
    extends Object
    implements IDLEntity
    有关特定CORBA数据类型的信息的容器。

    TypeCode对象:

    • 在动态调用接口中 - 指示实际参数的类型或返回值的类型。
      NamedValue对象用于表示参数和返回值。 他们的一个组件是一个Any对象,它反过来又作为一个组件的一个TypeCode对象。
    • 通过Interface Repository来表示作为许多OMG IDL声明的一部分的类型规范

    TypeCode对象的表示是不透明的,但抽象地,一个TypeCode对象包括:

    • 一个kind字段,它被设置为类TCKind一个实例
    • 零个或多个适合于特定种类的附加字段。 例如,描述OMG IDL类型1ongTypeCode对象具有TCKind.tk_long并且没有其他字段。 所述TypeCode描述OMG IDL类型sequence<boolean, 10>具有kind具有值字段TCKind.tk_sequence并且还与值的字段boolean10用于序列元素的类型和序列的长度。
    TypeCode可以通过各种方式获得对象:
    1. 从调用方法Any.insert_X ,其中X是基本的IDL类型。 此方法为类型X创建一个TypeCode对象,并将其分配给Any对象的type字段。
    2. 从ORB类中的方法调用

      例如,下面创建一个TypeCode用于对象string每次最多30个字符:

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

      下面创建一个TypeCode的对象array五个string S:

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

      以下为名为“帐户”的接口创建一个TypeCode对象:

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

    TypeCode类中的大多数方法都是访问器, TypeCode对象中包含的信息特定于特定类型。 因此,方法必须仅适用于它们所适用的类型代码。 如果访问器方法尝试从不适当类型的代码访问信息,它将抛出异常TypeCodePackage.BadKind 例如,如果方法discriminator_typeunion之外的任何东西被调用,它将抛出BadKind因为只有union具有鉴别union 以下列表显示哪些类型的代码适用于哪些方法:

    这些方法可以在所有TypeCode种上被调用:

    • equal
    • kind

    这些方法可以在调用objrefstructunion枚举aliasexceptionvaluevalue_boxnative ,并abstract_interface

    • id
    • name

    这些方法可以在调用structunion枚举 ,并exception

    • member_count
    • member_name

    这些方法可以在调用structunion ,并exception

    • member_type(int index)

    这些方法可以在union上调用:

    • member_label
    • discriminator_type
    • default_index

    这些方法可以在调用stringsequence ,并array

    • length

    这些方法可以在调用aliassequencearray ,并value_box

    • content_type

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

    不被映射的方法parameterparam_count已被弃用。

    的Java IDL扩展了CORBA规范,以允许在允许的所有操作struct TypeCode要在一个允许exception TypeCode为好。

    • 构造方法摘要

      构造方法  
      Constructor 描述
      TypeCode​()  
    • 方法摘要

      所有方法  接口方法  抽象方法 
      Modifier and Type 方法 描述
      abstract TypeCode concrete_base_type​()
      返回描述 TypeCode对象描述的值类型的具体基类型的 TypeCode对象。
      abstract TypeCode content_type​()
      返回 TypeCode表示IDL类型用于通过此所描述的对象的成员对象 TypeCode对象。
      abstract int default_index​()
      返回默认成员的索引,如果没有默认成员则返回-1。
      abstract TypeCode discriminator_type​()
      返回描述所有非默认成员标签的 TypeCode对象。
      abstract boolean equal​(TypeCode tc)
      将此 TypeCode对象与给定对象进行比较,测试相等性。
      abstract boolean equivalent​(TypeCode tc)
      测试看看给定的 TypeCode对象是否等同于这个 TypeCode对象。
      abstract short fixed_digits​()
      返回此 TypeCode对象描述的固定类型中的 TypeCode
      abstract short fixed_scale​()
      返回此 TypeCode对象描述的固定类型的比例。
      abstract TypeCode get_compact_typecode​()
      删除所有可选的名称和成员名称字段,但保留所有别名类型代码。
      abstract String id​()
      检索RepositoryId全局标识此 TypeCode对象的类型。
      abstract TCKind kind​()
      检索这个 TypeCode对象的种类。
      abstract int length​()
      返回此 TypeCode对象描述的类型中的元素数。
      abstract int member_count​()
      检索由该 TypeCode对象描述的类型的成员数。
      abstract Any member_label​(int index)
      检索由给定索引识别的联盟成员的标签。
      abstract String member_name​(int index)
      检索由给定索引识别的成员的简单名称。
      abstract TypeCode member_type​(int index)
      检索描述由给定索引识别的成员的类型的 TypeCode对象。
      abstract short member_visibility​(int index)
      返回指示给定索引处成员的可见性的常量。
      abstract String name​()
      检索在其封闭范围内识别此 TypeCode对象的简单名称。
      abstract short type_modifier​()
      返回一个常量,表示此 TypeCode对象描述的值类型的修饰符。
    • 构造方法详细信息

      • 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 - 与此类型代码进行比较的类型代码
        结果
        true如果给定的类型代码相当于此类型代码; 否则为false
      • get_compact_typecode

        public abstract TypeCode get_compact_typecode​()
        删除所有可选的名称和成员名称字段,但保留所有别名类型代码。
        结果
        一个具有可选名称和成员名称字段的 TypeCode对象被删除,除了别名类型代码,这些对象保持不变
        另请参见:
        CORBA package comments for unimplemented features
      • kind

        public abstract TCKind kind​()
        检索这种TypeCode对象的种类。 类型代码的种类决定了哪些TypeCode方法可以在其上被法律援引。

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

        结果
        TCKind实例指示该 TypeCode对象的 kind字段的值
      • id

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

        方法id可以在对象引用,结构,联合,枚举,别名,异常,价值类型,盒装价值类型,本地和抽象接口类型代码中被调用。 对象引用,异常,价值类型, TypeCode ,本机和抽象接口TypeCode对象始终具有RepositoryId。 从Interface Repository或TypeCode获取的结构,联合,枚举和别名ORB.create_operation_list也始终具有RepositoryId。 如果没有RepositoryId,该方法可以返回一个空字符串。

        结果
        这个 TypeCode对象的RepositoryId或没有RepositoryID的空字符串
        异常
        BadKind - 如果方法在不适当的类型的 TypeCode对象上被调用
      • name

        public abstract String name​()
                             throws BadKind
        检索在其封闭范围内识别此TypeCode对象的简单名称。 由于名称对于存储库是本地的,因此从TypeCode对象返回的名称可能与任何特定存储库中的类型名称可能不匹配,甚至可能是空字符串。

        方法name可以在对象引用,结构,联合,枚举,别名,异常,值类型, TypeCode ,本机和抽象接口TypeCode对象中被调用。

        结果
        标识此 TypeCode对象的名称或空字符串
        异常
        BadKind - 如果方法是在不适当的类型的 TypeCode对象上调用的
      • member_count

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

        可以在结构,联合和枚举TypeCode对象上调用方法member_count Java IDL扩展了CORBA规范,以允许此方法对异常进行操作。

        结果
        构成该 TypeCode对象描述的类型的成员数
        异常
        BadKind - 如果方法是在不适当的类型的 TypeCode对象上被调用的
      • member_name

        public abstract String member_name​(int index)
                                    throws BadKind,
                                           Bounds
        检索由给定索引识别的成员的简单名称。 由于名称对于存储库是本地的,所以从TypeCode对象返回的名称可能与任何特定存储库中的成员名称可能不匹配,甚至可能是空字符串。

        可以在结构,联合和枚举TypeCode对象上调用方法member_name Java IDL扩展了CORBA规范,以允许此方法对异常进行操作。

        参数
        index - 正在重新获取名称的成员的索引
        结果
        由索引或空字符串标识的成员的简单名称
        异常
        Bounds - 如果索引等于或大于构成类型的成员的数量
        BadKind - 如果方法是在不适当类型的 TypeCode对象上被调用的
      • member_type

        public abstract TypeCode member_type​(int index)
                                      throws BadKind,
                                             Bounds
        检索描述由给定索引识别的成员的类型的TypeCode对象。

        可以在结构和联合TypeCode对象上调用方法member_type Java IDL扩展了CORBA规范,以允许此方法对异常进行操作。

        参数
        index - 开始请求类型信息的成员的索引
        结果
        描述给定索引处的成员的 TypeCode对象
        异常
        Bounds - 如果索引等于或大于构成类型的成员数
        BadKind - 如果方法在不适当的类型的 TypeCode对象上被调用
      • member_label

        public abstract Any member_label​(int index)
                                  throws BadKind,
                                         Bounds
        检索由给定索引识别的联盟成员的标签。 对于默认成员,标签是零字节。

        方法member_label只能在联合TypeCode对象上调用。

        参数
        index - 正在请求标签的工会成员的索引
        结果
        描述请求的联盟成员的标签或默认成员的零字节的 Any对象
        异常
        Bounds - 如果索引等于或大于构成联合的成员数量
        BadKind - 如果方法在非联合 TypeCode对象上被调用
      • discriminator_type

        public abstract TypeCode discriminator_type​()
                                             throws BadKind
        返回描述所有非默认成员标签的TypeCode对象。 方法discriminator_type只能在联合TypeCode对象上调用。
        结果
        描述非默认成员标签的 TypeCode对象
        异常
        BadKind - 如果方法在非联合 TypeCode对象上被调用
      • default_index

        public abstract int default_index​()
                                   throws BadKind
        返回默认成员的索引,如果没有默认成员则返回-1。

        方法default_index只能在联合TypeCode对象上调用。

        结果
        默认成员的索引,如果没有默认成员则为-1
        异常
        BadKind - 如果在非联合 TypeCode对象上调用该方法
      • length

        public abstract int length​()
                            throws BadKind
        返回此TypeCode对象描述的类型的元素数。 对于字符串和序列,它返回绑定,零表示无界的字符串或序列。 对于数组,它返回数组中的元素数。

        可以对字符串,序列和数组TypeCode对象调用方法length

        结果
        字符串和序列的绑定,或数组元素的数量
        异常
        BadKind - 如果方法是在不适当类型的 TypeCode对象上调用的
      • content_type

        public abstract TypeCode content_type​()
                                       throws BadKind
        返回TypeCode表示IDL类型用于通过此所描述的对象的成员对象TypeCode对象。 对于序列和数组,它返回元素类型。 对于别名,它返回原始类型。 请注意,多维数组通过嵌套TypeCode对象(每个维度一个)来表示。 对于盒装的贵重类型,它返回盒装类型。

        方法content_type可以在序列,数组,别名和boxed值类型TypeCode对象上调用。

        结果
        一个 TypeCode对象,表示序列和数组的元素类型,别名的原始类型或者盒装值类型的boxed类型。
        异常
        BadKind - 如果方法是在不适当的类型的 TypeCode对象上被调用的
      • fixed_digits

        public abstract short fixed_digits​()
                                    throws BadKind
        返回此TypeCode对象描述的固定类型的位数。 例如,3000.275d的类型代码可以是fixed<7,3> ,其中7是精度,3是scale。
        结果
        总数位数
        异常
        BadKind - 如果在不适当的类型的 TypeCode对象上调用此方法
      • fixed_scale

        public abstract short fixed_scale​()
                                   throws BadKind
        返回此TypeCode对象描述的固定类型的比例。 正数表示小数点右侧的位数。 例如,数字3000d可能具有类型fixed<4,0> ,其中第一个数字是精度,第二个数字是比例。 负数也是可以的,并在小数点左边增加零。 在这种情况下, fixed<1,-3> ,可能是fixed<1,-3>的类型码。
        结果
        这个 TypeCode对象描述的固定类型的比例
        异常
        BadKind - 如果在不适当的类型的 TypeCode对象上调用此方法
      • member_visibility

        public abstract short member_visibility​(int index)
                                         throws BadKind,
                                                Bounds
        返回指示给定索引处成员的可见性的常量。 此操作只能在非盒装值TypeCode对象上调用。
        参数
        index - 一个 int表示索引值
        结果
        PRIVATE_MEMBER.valuePUBLIC_MEMBER.value
        异常
        BadKind - 如果在非值类型 TypeCode对象上调用此方法
        Bounds - 如果给定的索引超出范围
        另请参见:
        CORBA package comments for unimplemented features
      • type_modifier

        public abstract short type_modifier​()
                                     throws BadKind
        返回一个常量,指示TypeCode对象描述的值类型的修饰符。 返回的必须是以下中的一个常数: VM_NONE.valueVM_ABSTRACT.valueVM_CUSTOM.value ,或VM_TRUNCATABLE.value
        结果
        一个描述这个 TypeCode对象描述的值类型的常量
        异常
        BadKind - 如果在非值类型 TypeCode对象上调用此方法
        另请参见:
        CORBA package comments for unimplemented features
      • concrete_base_type

        public abstract TypeCode concrete_base_type​()
                                             throws BadKind
        返回描述TypeCode对象描述的值类型的具体基类型的TypeCode对象。 如果没有具体的基本类型,则返回null。
        结果
        描述 TypeCode对象描述的具体基础类型的 TypeCode对象
        异常
        BadKind - 如果在非盒装值类型 TypeCode对象上调用此方法
        另请参见:
        CORBA package comments for unimplemented features