public abstract class TypeCode extends Object implements IDLEntity
TypeCode
对象被使用:
NamedValue
对象用于表示参数和返回值。 他们的一个部件的是Any
对象,这反过来又具有作为其成分之一的TypeCode
对象。 TypeCode
对象的表示是不透明的,但抽象地说,一个TypeCode
对象包括:
kind
字段,它被设置为类的一个实例TCKind
TypeCode
OMG IDL类型1ong
的TypeCode
对象有TCKind.tk_long
,没有其他字段。 所述TypeCode
描述OMG IDL类型sequence<boolean, 10>
具有kind
具有值字段TCKind.tk_sequence
并且还与值的字段boolean
和10
用于序列元素的类型和序列的长度。 TypeCode
可以通过各种方式获得对象:
Any.insert_X
,其中X是基本的IDL类型。 此方法为类型X创建一个TypeCode
对象,并将其分配给Any
对象的type
字段。 例如,下面创建一个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");
Holder
类中的_type
方法的返回值。 这些Holder
类由idltojava
编译器生成。 TypeCode
类中的大多数方法都是访问器, TypeCode
对象中包含的信息特定于特定类型。 因此,方法必须仅适用于它们所适用的类型代码。 如果访问器方法尝试从不适当类型的代码访问信息,则会抛出异常TypeCodePackage.BadKind
。 例如,如果方法discriminator_type
在除union
之外的任何东西上被调用,那么它会抛出BadKind
,因为只有union
有一个鉴别符。 以下列表显示哪些类型的代码适用于哪些方法:
这些方法可以调用所有TypeCode
种:
equal
kind
这些方法可以在调用objref
, struct
, union
, 枚举
, alias
, exception
, value
, value_box
, native
和abstract_interface
:
id
name
这些方法可以在调用struct
, union
, 枚举
和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
为好。
Constructor and Description |
---|
TypeCode() |
Modifier and Type | Method and Description |
---|---|
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 对象描述的固定类型中的位数。
|
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 对象描述的值类型的修饰符。
|
public abstract boolean equal(TypeCode tc)
TypeCode
对象与给定对象进行比较,测试相等。
TypeCode
对象是相等的,如果它们是可互换的,并且当应用TypeCode
操作时给出相同的结果。
tc
-
TypeCode
对象进行比较
true
如果类型代码相等;
false
否则
public abstract boolean equivalent(TypeCode tc)
TypeCode
对象是否等同于这个
TypeCode
对象。
tc
- 与此类型代码进行比较的类型代码
true
如果给定的类型代码相当于此类型代码;
false
否则
public abstract TypeCode get_compact_typecode()
TypeCode
对象被删除,除了别名类型代码,这些对象保持不变
CORBA
package comments for unimplemented features
public abstract TCKind kind()
TypeCode
对象的种类。
类型代码的种类决定了哪些TypeCode
方法可以合法地被调用。
可以在任何TypeCode
对象上调用方法kind
。
TypeCode
对象的
kind
字段的值的
TCKind
实例
public abstract String id() throws BadKind
TypeCode
对象的类型。
方法id
可以在对象引用,结构,联合,枚举,别名,异常,值类型,盒装价值类型,本机和抽象接口类型代码中被调用。 对象引用,异常,价值类型,盒装价值类型,本机和抽象接口TypeCode
对象始终具有RepositoryId。 从Interface Repository或TypeCode
获取的结构,联合,枚举和别名ORB.create_operation_list
也始终具有RepositoryId。 如果没有RepositoryId,该方法可以返回一个空字符串。
TypeCode
对象的
TypeCode
或没有RepositoryID的空字符串
BadKind
- 如果方法在不适当的类型
TypeCode
对象上被调用
public abstract String name() throws BadKind
TypeCode
对象的简单名称。
由于名称对于存储库是本地的,所以从TypeCode
对象返回的名称可能与任何特定存储库中的类型名称可能不匹配,甚至可能是空字符串。
方法name
可以被调用对象引用,结构,联合,枚举,别名,异常,值类型,盒式价值类型,本机和抽象接口TypeCode
对象。
TypeCode
对象的名称或空字符串
BadKind
- 如果方法是调用不适当的
TypeCode
对象
public abstract int member_count() throws BadKind
TypeCode
对象描述的类型的成员数。
可以在结构,联合和枚举TypeCode
对象上调用方法member_count
。 Java IDL扩展了CORBA规范,以允许此方法对异常进行操作。
TypeCode
对象描述的类型的成员数
BadKind
- 如果方法在不适当的类型
TypeCode
对象上被调用
public abstract String member_name(int index) throws BadKind, Bounds
TypeCode
对象返回的名称可能与任何特定存储库中的成员名称可能不匹配,甚至可能是空字符串。
可以在结构,联合和枚举TypeCode
对象上调用方法member_name
。 Java IDL扩展了CORBA规范,以允许此方法对异常进行操作。
public abstract TypeCode member_type(int index) throws BadKind, Bounds
TypeCode
对象。
可以在结构和联合TypeCode
对象上调用方法member_type
。 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
非默认成员标签的
TypeCode
对象
BadKind
- 如果在非联合
TypeCode
对象上调用该方法
public abstract int default_index() throws BadKind
方法default_index
只能在union TypeCode
对象上调用。
BadKind
- 如果在非联合
TypeCode
对象上调用该方法
public abstract int length() throws BadKind
TypeCode
对象描述的类型中的元素数。
对于字符串和序列,它返回绑定,零表示无界的字符串或序列。
对于数组,它返回数组中的元素数。
可以对字符串,序列和数组TypeCode
对象调用方法length
。
BadKind
- 如果方法在不适当的类型的
TypeCode
对象上被调用
public abstract TypeCode content_type() throws BadKind
TypeCode
对象描述的对象的成员的IDL类型的TypeCode
对象。
对于序列和数组,它返回元素类型。
对于别名,它返回原始类型。
请注意,多维数组通过嵌套TypeCode
对象(每个维度一个)来表示。
对于盒装的贵重类型,它返回盒装类型。
方法content_type
可以对序列,数组,别名和盒装的价值TypeCode
对象进行调用。
TypeCode
序列和数组的元素类型的
TypeCode
对象,别名的原始类型或盒装值类型的boxed类型。
BadKind
- 如果方法在不适当的类型的
TypeCode
对象上被调用
public abstract short fixed_digits() throws BadKind
TypeCode
对象描述的固定类型中的位数。
例如,3000.275d的类型代码可以是fixed<7,3>
,其中7是精度,3是scale。
BadKind
- 如果在不适当的类型的
TypeCode
对象上调用此方法
public abstract short fixed_scale() throws BadKind
TypeCode
对象描述的固定类型的比例。
正数表示小数点右侧的位数。
例如,数字3000d可以具有类型代码fixed<4,0>
,其中第一个数字是精度,第二个数字是比例。
负数也是可以的,并在小数点左边增加零。
在这种情况下, fixed<1,-3>
,可能是3000d的类型码。
TypeCode
对象描述的固定类型的比例
BadKind
- 如果在不适当的类型的
TypeCode
对象上调用此方法
public abstract short member_visibility(int index) throws BadKind, Bounds
TypeCode
对象上调用。
index
- 一个
int
指示该值的值
PRIVATE_MEMBER.value
或
PUBLIC_MEMBER.value
BadKind
- 如果在非值类型
TypeCode
对象上调用此方法
Bounds
- 如果给定的索引超出范围
CORBA
package comments for unimplemented features
public abstract short type_modifier() throws BadKind
TypeCode
对象描述的值类型的修饰符。
返回的必须是以下中的一个常数: VM_NONE.value
, VM_ABSTRACT.value
, VM_CUSTOM.value
,或VM_TRUNCATABLE.value
,
TypeCode
对象描述的值类型的常量
BadKind
- 如果在非值类型
TypeCode
对象上调用此方法
CORBA
package comments for unimplemented features
public abstract TypeCode concrete_base_type() throws BadKind
TypeCode
对象描述的值类型的具体基本类型的TypeCode
对象。
如果没有具体的基本类型,则返回null。
TypeCode
对象描述的值类型的具体基类型的
TypeCode
对象
BadKind
- 如果在非盒装值类型
TypeCode
对象上调用此方法
CORBA
package comments for unimplemented features