java.lang.Object org.omg.CORBA.TypeCode
用于有关特定 CORBA 数据类型的信息的容器。
TypeCode
对象的作用包括:
NamedValue
对象用于表示参数和返回值。其中有一个组件是 Any
对象,该 Any 对象又有一个 TypeCode
对象作为其组件之一。 TypeCode
对象的表示形式是不透明的,从理论上说,TypeCode
对象由以下内容组成:
kind
字段,它被设置为 TCKind
类的一个实例 1ong
的 TypeCode
对象所具有的种类为 TCKind.tk_long
,没有附加字段。描述 OMG IDL 类型 sequence<boolean, 10>
的 TypeCode
具有一个值为 TCKind.tk_sequence
的 kind
字段,以及值为 boolean
和 10
(用于序列元素的类型和序列的长度)的字段。
TypeCode
对象:
Any.insert_X
方法,其中 X 为基本 IDL 类型。此方法为类型 X 创建 TypeCode
对象,并将其分配给 Any
对象的 type
字段。 例如,以下代码为 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");
Holder
类中 _type
方法的返回值。这些 Holder
类由 idltojava
编译器生成。 TypeCode
类中的大多数方法都是访问方法,包含在 TypeCode
对象中的信息是特定于特定类型的。所以,必须只在所应用类型代码的种类上调用这些方法。如果访问方法试图从不适当类型代码种类中访问信息,则将抛出异常 TypeCodePackage.BadKind
。例如,如果在 union
以外的其他种类上调用 discriminator_type
方法,则将抛出 BadKind
异常,因为只有 union
具有鉴别符 (discriminator)。以下列表展示将哪些方法应用到哪些类型代码种类:
以下方法可以在所有 TypeCode
种类上调用:
equal
kind
以下方法可以在 objref
、struct
、union
、enum
、alias
、exception
、value
、value_box
、native
和 abstract_interface
上调用:
id
name
以下方法可以在 struct
、union
、enum
和 exception
上调用:
member_count
member_name
以下方法可以在 struct
、union
和 exception
上调用:
member_type(int index)
以下方法可以在 union
上调用:
member_label
discriminator_type
default_index
以下方法可以在 string
、sequence
和 array
上调用:
length
以下方法可以在 alias
、sequence
、array
和 value_box
上调用:
content_type
与其他 CORBA 伪对象不同,TypeCode
对象可以作为一般 IDL 参数传递。
不推荐使用 parameter
和 param_count
方法,所以未映射。
Java IDL 扩展了 CORBA 规范,以允许能在 struct
TypeCode
上执行的所有操作同样能在 exception
TypeCode
上执行。
构造方法摘要 | |
---|---|
TypeCode() |
方法摘要 | |
---|---|
abstract TypeCode |
concrete_base_type() 返回一个 TypeCode 对象,它描述此 TypeCode 对象所描述 value 类型的具体基本类型。 |
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 对象所描述的 fixed 类型中数字的数量。 |
abstract short |
fixed_scale() 返回此 TypeCode 对象所描述的 fixed 类型的标度。 |
abstract TypeCode |
get_compact_typecode() 剔除所有可选名称和成员名称字段,但使所有别名 typecode 保留原样。 |
abstract String |
id() 检索全局标识此 TypeCode 对象类型的 RepositoryId。 |
abstract TCKind |
kind() 检索此 TypeCode 对象的种类。 |
abstract int |
length() 返回此 TypeCode 对象所描述类型中的成员数。 |
abstract int |
member_count() 检索此 TypeCode 对象所描述类型中的成员数。 |
abstract Any |
member_label(int index) 检索给定索引标识的 union 成员的标签。 |
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 对象所描述的 value 类型的修饰符。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public TypeCode()
方法详细信息 |
---|
public abstract boolean equal(TypeCode tc)
TypeCode
对象与给定对象比较,测试它们是否相等。如果两个
TypeCode
对象可以互换并在对它们应用
TypeCode
操作时返回相同的结果,则这两个对象相等。
tc
- 要与之比较的
TypeCode
对象
true
;否则返回
false
public abstract boolean equivalent(TypeCode tc)
TypeCode
对象是否等于此
TypeCode
对象。
tc
- 将与此 typecode 比较的 typecode
true
;否则返回
false
public abstract TypeCode get_compact_typecode()
TypeCode
对象,已剔除可选名称和成员名称字段,但别名 typecode 保持不变
CORBA
包中有关未实现特性的注释
public abstract TCKind kind()
TypeCode
对象的种类。代码类型的种类可确定哪些
TypeCode
方法可以合法地在该种类之上进行调用。
kind
方法可以在任何 TypeCode
对象上调用。
TypeCode
对象
kind
字段值的
TCKind
实例
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
对象种类上调用该方法
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
对象种类上调用该方法
public abstract int member_count() throws BadKind
TypeCode
对象所描述类型中的成员数。
member_count
方法可以在 structure、union 和 enumeration TypeCode
对象上调用。Java IDL 扩展了 CORBA 规范,允许此方法在异常上进行操作。
TypeCode
对象所描述类型的成员数
BadKind
- 如果在不适当的
TypeCode
对象种类上调用该方法
public abstract String member_name(int index) throws BadKind, Bounds
TypeCode
对象返回的名称可能与任何特定 Repository 中的成员名称不匹配,甚至可能是一个空字符串。
可以在 structure、union 和 enumeration TypeCode
对象上调用 member_name
方法。Java IDL 扩展了 CORBA 规范,允许此方法在异常上进行操作。
public abstract TypeCode member_type(int index) throws BadKind, Bounds
TypeCode
对象,它描述给定索引所标识成员的类型。
member_type
方法可以在 structure 和 union TypeCode
对象上调用。Java IDL 扩展了 CORBA 规范,允许此方法在异常上进行操作。
public abstract Any member_label(int index) throws BadKind, Bounds
member_label
方法可以在 union TypeCode
对象上调用。
public abstract TypeCode discriminator_type() throws BadKind
TypeCode
对象。
discriminator_type
方法只能在 union
TypeCode
对象上调用。
TypeCode
对象
BadKind
- 如果在非 union
TypeCode
对象上调用该方法
public abstract int default_index() throws BadKind
default_index
方法只能在 union TypeCode
对象上调用。
BadKind
- 如果在非 union
TypeCode
对象上调用该方法
public abstract int length() throws BadKind
TypeCode
对象所描述类型中的成员数。对于 string 和 sequence,该方法返回一个范围,0 指示无界的 string 或 sequence。对于 array,此方法返回其成员数。
length
方法可以在 string、sequence 和 array TypeCode
对象上调用。
BadKind
- 如果在不适当的
TypeCode
对象种类上调用该方法
public abstract TypeCode content_type() throws BadKind
TypeCode
对象所描述成员 IDL 类型的
TypeCode
对象。对于 sequence 和 array,该方法返回元素类型。对于 alias,该方法返回原始类型。注意,多维 array 用嵌套
TypeCode
对象表示,每个维度一个对象。对于 boxed valuetype,该方法返回 boxed 类型。
content_type
方法可以在 sequence、array、alias 和 boxed valuetype TypeCode
对象上调用。
TypeCode
对象,它对于 sequence 和 array 表示元素类型;对于 alias 表示原始类型;对于 boxed valuetype 表示 boxed 类型。
BadKind
- 如果在不适当的
TypeCode
对象种类上调用该方法
public abstract short fixed_digits() throws BadKind
TypeCode
对象所描述的 fixed 类型中数字的数量。例如,数字 3000.275d 的 typecode 是
fixed<7,3>
,其中 7 是精确度,3 是标度。
BadKind
- 如果在不适当的
TypeCode
对象种类上调用该方法
public abstract short fixed_scale() throws BadKind
TypeCode
对象所描述的 fixed 类型的标度。正数指示小数点右边的数字个数。例如,数字 3000d 的 typecode 是
fixed<4,0>
,其中第一个数字是精度,第二个数字是标度。出现负数也是有可能的,在小数点的左边添加 0 即可。在这种情况下,
fixed<1,-3>
是数字 3000d 的 typecode。
TypeCode
对象所描述 fixed 类型的标度
BadKind
- 如果在不适当的
TypeCode
对象种类上调用该方法
public abstract short member_visibility(int index) throws BadKind, Bounds
TypeCode
对象上调用。
index
- 指示 value 中索引的
int
值
PRIVATE_MEMBER.value
或
PUBLIC_MEMBER.value
BadKind
- 如果在非 value 类型
TypeCode
对象上调用此方法
Bounds
- 如果给定索引超出范围
CORBA
包中有关未实现特性的注释
public abstract short type_modifier() throws BadKind
TypeCode
对象所描述的 value 类型的修饰符。返回的常量必须是以下常量之一:
VM_NONE.value
、
VM_ABSTRACT.value
、
VM_CUSTOM.value
或
VM_TRUNCATABLE.value
。
TypeCode
对象所描述 value 类型的常量
BadKind
- 如果在非 value 类型
TypeCode
对象上调用此方法
CORBA
包中有关未实现特性的注释
public abstract TypeCode concrete_base_type() throws BadKind
TypeCode
对象,它描述此
TypeCode
对象所描述 value 类型的具体基本类型。如果没有具体基本类型,则返回 null。
TypeCode
对象,它描述此
TypeCode
对象所描述 value 类型的具体基本类型
BadKind
- 如果在非 boxed value 类型
TypeCode
对象上调用此方法
CORBA
包中有关未实现特性的注释