public interface DynAnyOperations
DynAny对象可以被视为组件DynAnys的有序集合。 对于代表基本类型(如long)或无组件类型(如空异常)的DynAnys,组件的有序集合为空。 每个DynAny对象将当前位置的概念维护到其组件DynAnys的集合中。 当前位置由从0到n-1运行的索引值来标识,其中n是组件的数量。 特殊索引值-1表示当前位置。 对于不能具有当前位置的值(如空异常),索引值固定为-1。 如果使用具有组件的值初始化DynAny,则索引将初始化为0.创建未初始化的DynAny(即,没有值但具有允许组件的TypeCode的DynAny)之后,当前位置取决于类型由DynAny代表的价值。 (当前位置设置为0或-1,具体取决于新的DynAny是否为其组件获取默认值。)
迭代操作倒退,查找和下一个可以用于更改当前位置,并且current_component操作返回当前位置的组件。 component_count操作返回DynAny的组件数。 总而言之,这些操作可以对DynAny的组件执行迭代,例如(递归)检查其内容。
构造的DynAny对象是与构造类型相关联的DynAny对象。 有一个不同的接口,从DynAny接口继承,与IDL(固定,枚举,结构,序列,联合,数组,异常和值类型)中的每种构造类型相关联。
构造的DynAny对象导出可以创建新的DynAny对象的操作,每个对象都与构造的数据值的组件相关联。 作为示例,DynStruct与一个结构体值相关联。 这意味着DynStruct可能被视为拥有一个有序的组件集合,每个结构成员一个。 DynStruct对象导出可以创建新的DynAny对象的操作,每个对象都与结构体的成员相关联。
如果已经从另一个(构造的)DynAny对象获取DynAny对象,例如DynAny表示从DynStruct创建的结构成员,则DynAny会在逻辑上包含DynStruct。 调用插入或获取操作使当前位置保持不变。 销毁顶层DynAny对象(未作为另一个DynAny的组件获取的对象)也会销毁从其获取的任何组件DynAny对象。 销毁非顶级DynAny对象什么都不做。 对已销毁的顶级DynAny或其任何后代调用操作会引发OBJECT_NOT_EXIST。 如果程序员想要销毁一个DynAny对象,但是仍然想要操作与它相关联的数据值的某个组件,那么他或她应该首先为该组件创建一个DynAny,然后创建一个创建的DynAny对象的副本。
已经定义了DynAny对象的行为,以便在分配的内存空间和访问速度方面实现高效的实现。 DynAny对象旨在用于遍历从anys提取的值或在运行时构建anys的值。 不建议将其用于其他目的。
处理基本的DynAny对象需要插入和获取操作,但也有助于处理构造的DynAny对象。 将基本数据类型值插入构造的DynAny对象意味着初始化与DynAny对象关联的构造数据值的当前组件。 例如,在DynStruct上调用insert_boolean意味着在关联的struct数据值的当前位置插入一个布尔数据值。 如果TypeCode等同于DynAny中包含的TypeCode,或者如果DynAny具有组件,则类型与当前位置的DynAny的TypeCode相当,则该类型与插入或提取值是一致的。
DynAny和DynAnyFactory对象旨在在其创建和使用的进程的本地。 这意味着对DynAny和DynAnyFactory对象的引用不能导出到其他进程,或者使用ORB.object_to_string()进行外部化。 如果尝试这样做,违规行为会引发MARSHAL系统异常。 由于它们的接口在IDL中指定,所以DynAny对象导出在标准org.omg.CORBA.Object接口中定义的操作。 但是,任何调用通过Object接口导出的操作的尝试可能会引发标准的NO_IMPLEMENT异常。 尝试在DII中使用DynAny对象可能会引发NO_IMPLEMENT异常。
Modifier and Type | Method and Description |
---|---|
void |
assign(DynAny dyn_any)
使用与另一个DynAny对象关联的值初始化与DynAny对象关联的值。
|
int |
component_count()
返回DynAny的组件数。
|
DynAny |
copy()
创建一个新的DynAny对象,该对象的值是调用它的DynAny的深层副本。
|
DynAny |
current_component()
返回当前位置的组件的DynAny。
|
void |
destroy()
销毁DynAny对象。
|
boolean |
equal(DynAny dyn_any)
比较两个DynAny值以获得相等性。
|
void |
from_any(Any value)
使用任何值中包含的值初始化与DynAny对象关联的值。
|
Any |
get_any()
提取由DynAny表示的Any中包含的任何值。
|
boolean |
get_boolean()
从此DynAny中提取布尔值。
|
char |
get_char()
从此DynAny中提取字符值。
|
double |
get_double()
从此DynAny中提取双重值。
|
DynAny |
get_dyn_any()
提取由该DynAny表示的Any中包含的Any值,并将其返回包装到新的DynAny中。
|
float |
get_float()
从此DynAny中提取浮点值。
|
int |
get_long()
从此DynAny中提取整数值。
|
long |
get_longlong()
从DynAny中提取长的值。
|
byte |
get_octet()
从此DynAny中提取字节值。
|
Object |
get_reference()
从此DynAny中提取对CORBA对象的引用。
|
short |
get_short()
从此DynAny中提取短值。
|
String |
get_string()
从此DynAny中提取字符串值。
|
TypeCode |
get_typecode()
从此DynAny中提取TypeCode对象。
|
int |
get_ulong()
从此DynAny中提取整数值。
|
long |
get_ulonglong()
从DynAny中提取长的值。
|
short |
get_ushort()
从此DynAny中提取短值。
|
Serializable |
get_val()
从此DynAny中提取可序列化的对象。
|
char |
get_wchar()
从DynAny中提取长的值。
|
String |
get_wstring()
从此DynAny中提取字符串值。
|
void |
insert_any(Any value)
在此DynAny表示的Any中插入任何值。
|
void |
insert_boolean(boolean value)
在DynAny中插入一个布尔值。
|
void |
insert_char(char value)
在DynAny中插入一个char值。
|
void |
insert_double(double value)
在DynAny中插入一个双重值。
|
void |
insert_dyn_any(DynAny value)
将包含在参数DynAny中的Any值插入到此DynAny表示的Any中。
|
void |
insert_float(float value)
在DynAny中插入一个浮点值。
|
void |
insert_long(int value)
在DynAny中插入一个整数值。
|
void |
insert_longlong(long value)
在DynAny中插入一个长的值。
|
void |
insert_octet(byte value)
在DynAny中插入一个字节值。
|
void |
insert_reference(Object value)
将CORBA对象的引用插入到DynAny中。
|
void |
insert_short(short value)
在DynAny中插入一个简短的值。
|
void |
insert_string(String value)
在DynAny中插入一个字符串值。
|
void |
insert_typecode(TypeCode value)
将TypeCode对象插入到DynAny中。
|
void |
insert_ulong(int value)
在DynAny中插入一个整数值。
|
void |
insert_ulonglong(long value)
在DynAny中插入一个长的值。
|
void |
insert_ushort(short value)
在DynAny中插入一个简短的值。
|
void |
insert_val(Serializable value)
将可序列化对象的引用插入此DynAny。
|
void |
insert_wchar(char value)
在DynAny中插入一个char值。
|
void |
insert_wstring(String value)
在DynAny中插入一个字符串值。
|
boolean |
next()
将当前位置提前到下一个组件。
|
void |
rewind()
相当于seek(0)。
|
boolean |
seek(int index)
将当前位置设置为索引。
|
Any |
to_any()
从DynAny对象创建任何值。
|
TypeCode |
type()
返回与此DynAny对象关联的TypeCode。
|
TypeCode type()
void assign(DynAny dyn_any) throws TypeMismatch
dyn_any
-
TypeMismatch
- 如果传递的DynAny的类型不等于目标类型DynAny
void from_any(Any value) throws TypeMismatch, InvalidValue
TypeMismatch
- 如果传递的Any类型不等于目标DynAny的类型
InvalidValue
- 如果传递的Any不包含合法值(如空字符串)
Any to_any()
boolean equal(DynAny dyn_any)
void destroy()
DynAny copy()
void insert_boolean(boolean value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在其当前组件本身具有组件的DynAny上调用
void insert_octet(byte value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
void insert_char(char value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
void insert_short(short value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
void insert_ushort(short value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
void insert_long(int value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
void insert_ulong(int value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
void insert_float(float value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
void insert_double(double value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
void insert_string(String value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
InvalidValue
- 如果插入的字符串长于有界字符串的边界
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
void insert_reference(Object value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
void insert_typecode(TypeCode value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
void insert_longlong(long value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
void insert_ulonglong(long value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在其当前组件本身具有组件的DynAny上调用
void insert_wchar(char value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
void insert_wstring(String value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
InvalidValue
- 如果插入的字符串长于有界字符串的边界
TypeMismatch
void insert_any(Any value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
void insert_dyn_any(DynAny value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
void insert_val(Serializable value) throws TypeMismatch, InvalidValue
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
boolean get_boolean() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于所请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
byte get_octet() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
char get_char() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中访问的组件的类型不等于请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
short get_short() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中的访问组件的类型不等同于请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
short get_ushort() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中访问的组件的类型不等于请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
int get_long() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中的访问组件的类型不等同于请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
int get_ulong() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
float get_float() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
double get_double() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
String get_string() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中的访问组件的类型不等同于请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
Object get_reference() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于所请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
TypeCode get_typecode() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于所请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
long get_longlong() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于所请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
long get_ulonglong() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
char get_wchar() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
String get_wstring() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于所请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
Any get_any() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于所请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
DynAny get_dyn_any() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中访问的组件的类型不等于请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
Serializable get_val() throws TypeMismatch, InvalidValue
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于请求的类型。
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
boolean seek(int index)
void rewind()
boolean next()
int component_count()
DynAny current_component() throws TypeMismatch
TypeMismatch
- 如果在没有组件的DynAny上调用,例如DynEnum或空的异常