|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
org.omg.CORBA
类 TypeCode
java.lang.Object org.omg.CORBA.TypeCode
- 所有已实现的接口:
- Serializable, IDLEntity
用于有关特定 CORBA 数据类型的信息的容器。
TypeCode
对象的作用包括:
- 在动态调用接口 (Dynamic Invocation Interface) 中,用于指示实际参数的类型或返回值的类型。
NamedValue
对象用于表示参数和返回值。其中有一个组件是Any
对象,该 Any 对象又有一个TypeCode
对象作为其组件之一。 - 由接口存储库 (Interface Repository) 用来表示作为许多 OMG IDL 声明一部分的类型说明。
TypeCode
对象的表示形式是不透明的,从理论上说,TypeCode
对象由以下内容组成:
- 一个
kind
字段,它被设置为TCKind
类的一个实例 - 0 个或多个适用于特定种类的附加字段。例如,描述 OMG IDL 类型
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
字段。 - 通过调用 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");
- 作为用于用户定义 IDL 类型的
Holder
类中_type
方法的返回值。这些Holder
类由idltojava
编译器生成。 - 从 CORBA 接口存储库中获取
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 |
构造方法详细信息 |
---|
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 interfaceTypeCode
对象总是有一个 RepositoryId。从接口存储库 (Interface Repository) 或方法ORB.create_operation_list
中获得的 structure、union、enumeration 和 aliasTypeCode
对象也总是有一个 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 interfaceTypeCode
对象上调用。 -
-
- 返回:
-
标识此
TypeCode
对象的名称或一个空字符串 - 抛出:
BadKind
- 如果在不适当的TypeCode
对象种类上调用该方法
member_count
public abstract int member_count() throws BadKind
-
检索此
TypeCode
对象所描述类型中的成员数。member_count
方法可以在 structure、union 和 enumerationTypeCode
对象上调用。Java IDL 扩展了 CORBA 规范,允许此方法在异常上进行操作。 -
-
- 返回:
-
组成此
TypeCode
对象所描述类型的成员数 - 抛出:
BadKind
- 如果在不适当的TypeCode
对象种类上调用该方法