-
- All Known Subinterfaces:
-
DynAny
,DynArray
,DynArrayOperations
,DynEnum
,DynEnumOperations
,DynFixed
,DynFixedOperations
,DynSequence
,DynSequenceOperations
,DynStruct
,DynStructOperations
,DynUnion
,DynUnionOperations
,DynValue
,DynValueBox
,DynValueBoxOperations
,DynValueCommon
,DynValueCommonOperations
,DynValueOperations
- 所有已知实现类:
-
_DynAnyStub
,_DynArrayStub
,_DynEnumStub
,_DynFixedStub
,_DynSequenceStub
,_DynStructStub
,_DynUnionStub
,_DynValueStub
public interface DynAnyOperations
任何值都可以动态解释(遍历)并通过DynAny对象构造。 DynAny对象与数据值相关联,数据值对应于插入任何值的副本。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 方法 描述 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。
-
-
-
方法详细信息
-
type
TypeCode type()
返回与此DynAny对象关联的TypeCode。 创建一个DynAny对象,并分配一个TypeCode值。 此TypeCode值确定通过DynAny对象处理的值的类型。 请注意,与DynAny对象关联的TypeCode在DynAny创建时被初始化,并且在DynAny对象的生存期内不能更改。- 结果
- 与此DynAny对象关联的TypeCode
-
assign
void assign(DynAny dyn_any) throws TypeMismatch
使用与另一个DynAny对象关联的值初始化与DynAny对象关联的值。 对于具有组件的值,目标DynAny的当前位置设置为零,对于没有组件的值,将其设置为-1。- 参数
-
dyn_any
- - 异常
-
TypeMismatch
- 如果传递的DynAny的类型不等于目标DynAny的类型
-
from_any
void from_any(Any value) throws TypeMismatch, InvalidValue
使用任何值中包含的值初始化与DynAny对象关联的值。 对于具有组件的值,目标DynAny的当前位置设置为零,对于没有组件的值,将其设置为-1。- 异常
-
TypeMismatch
- 如果传递的Any类型不等于目标DynAny的类型 -
InvalidValue
- 如果传递的Any不包含合法值(如空字符串)
-
to_any
Any to_any()
从DynAny对象创建任何值。 与DynAny对象关联的TypeCode的副本被分配给所得到的任何对象。 与DynAny对象相关联的值被复制到any中。- 结果
- 一个新的具有相同值的Any对象和TypeCode
-
equal
boolean equal(DynAny dyn_any)
比较两个DynAny值以获得相等性。 如果它们的TypeCode是等效的,并且递归地,所有组件DynAnys具有相等的值,则两个DynAny值相等。 正在比较的两个DynAnys的当前位置对于相等的结果没有影响。- 结果
- DynAnys的真实是相等的,否则为false
-
destroy
void destroy()
销毁DynAny对象。 此操作将释放用于表示与DynAny对象关联的数据值的任何资源。 必须对在ORB接口上的一个创建操作或DynAny.copy()返回的引用获得的引用进行调用,以避免资源泄漏。 对组件DynAny对象(例如,由current_component操作返回的对象)调用destroy将不执行任何操作。 破坏DynAny对象意味着从它获得的所有DynAny对象的破坏。 也就是说,对被破坏的DynAny的组件的引用变得无效。 对这些引用的调用会引发OBJECT_NOT_EXIST。 在销毁组件的DynAny之前,通过复制操作复制该组件,可以在DynAny的使用寿命期限之外操作DynAny的组件。
-
copy
DynAny copy()
创建一个新的DynAny对象,该对象的值是调用它的DynAny的深层副本。 操作是多态的,即在DynAny派生的类型之一(如DynStruct)中调用它,创建派生类型,但返回其作为DynAny基类型的引用。- 结果
- DynAny对象的深层副本
-
insert_boolean
void insert_boolean(boolean value) throws TypeMismatch, InvalidValue
在DynAny中插入一个布尔值。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_octet
void insert_octet(byte value) throws TypeMismatch, InvalidValue
在DynAny中插入一个字节值。 IDL八位字节数据类型映射到Java字节数据类型。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_char
void insert_char(char value) throws TypeMismatch, InvalidValue
在DynAny中插入一个char值。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_short
void insert_short(short value) throws TypeMismatch, InvalidValue
在DynAny中插入一个简短的值。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_ushort
void insert_ushort(short value) throws TypeMismatch, InvalidValue
在DynAny中插入一个简短的值。 IDL ushort数据类型映射到Java短数据类型。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_long
void insert_long(int value) throws TypeMismatch, InvalidValue
在DynAny中插入一个整数值。 IDL长数据类型映射到Java int数据类型。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_ulong
void insert_ulong(int value) throws TypeMismatch, InvalidValue
在DynAny中插入一个整数值。 IDL ulong数据类型映射到Java int数据类型。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_float
void insert_float(float value) throws TypeMismatch, InvalidValue
在DynAny中插入一个浮点值。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_double
void insert_double(double value) throws TypeMismatch, InvalidValue
在DynAny中插入一个双重值。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_string
void insert_string(String value) throws TypeMismatch, InvalidValue
在DynAny中插入一个字符串值。 使用此方法插入有界和无界的字符串。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
InvalidValue
- 如果插入的字符串长于有界字符串的边界 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_reference
void insert_reference(Object value) throws TypeMismatch, InvalidValue
将CORBA对象的引用插入到DynAny中。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_typecode
void insert_typecode(TypeCode value) throws TypeMismatch, InvalidValue
将TypeCode对象插入到DynAny中。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_longlong
void insert_longlong(long value) throws TypeMismatch, InvalidValue
在DynAny中插入一个长的值。 IDL长长数据类型映射到Java长数据类型。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_ulonglong
void insert_ulonglong(long value) throws TypeMismatch, InvalidValue
在DynAny中插入一个长的值。 IDL unsigned long long数据类型映射到Java long数据类型。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_wchar
void insert_wchar(char value) throws TypeMismatch, InvalidValue
在DynAny中插入一个char值。 IDL wchar数据类型映射到Java字符数据类型。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_wstring
void insert_wstring(String value) throws TypeMismatch, InvalidValue
在DynAny中插入一个字符串值。 使用此方法插入有界和无界的字符串。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
InvalidValue
- 如果插入的字符串长于有界字符串的边界 -
TypeMismatch
-
insert_any
void insert_any(Any value) throws TypeMismatch, InvalidValue
在此DynAny表示的Any中插入任何值。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_dyn_any
void insert_dyn_any(DynAny value) throws TypeMismatch, InvalidValue
将包含在参数DynAny中的Any值插入到此DynAny表示的Any中。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
insert_val
void insert_val(Serializable value) throws TypeMismatch, InvalidValue
将可序列化对象的引用插入此DynAny。 IDL ValueBase类型映射到Java可序列化类型。- 异常
-
InvalidValue
- 如果此DynAny具有组件但当前位置为-1 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用
-
get_boolean
boolean get_boolean() throws TypeMismatch, InvalidValue
从此DynAny中提取布尔值。- 异常
-
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于所请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_octet
byte get_octet() throws TypeMismatch, InvalidValue
从此DynAny中提取字节值。 IDL八位字节数据类型映射到Java字节数据类型。- 异常
-
TypeMismatch
- 如果DynAny中的访问组件的类型不等同于请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_char
char get_char() throws TypeMismatch, InvalidValue
从此DynAny中提取字符值。- 异常
-
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_short
short get_short() throws TypeMismatch, InvalidValue
从此DynAny中提取短值。- 异常
-
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_ushort
short get_ushort() throws TypeMismatch, InvalidValue
从此DynAny中提取短值。 IDL ushort数据类型映射到Java短数据类型。- 异常
-
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_long
int get_long() throws TypeMismatch, InvalidValue
从此DynAny中提取整数值。 IDL长数据类型映射到Java int数据类型。- 异常
-
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_ulong
int get_ulong() throws TypeMismatch, InvalidValue
从此DynAny中提取整数值。 IDL ulong数据类型映射到Java int数据类型。- 异常
-
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于所请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_float
float get_float() throws TypeMismatch, InvalidValue
从此DynAny中提取浮点值。- 异常
-
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_double
double get_double() throws TypeMismatch, InvalidValue
从此DynAny中提取双重值。- 异常
-
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_string
String get_string() throws TypeMismatch, InvalidValue
从此DynAny中提取字符串值。 使用这种方法提取有界和无界的字符串。- 异常
-
TypeMismatch
- 如果DynAny中访问的组件的类型不等于请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_reference
Object get_reference() throws TypeMismatch, InvalidValue
从此DynAny中提取对CORBA对象的引用。- 异常
-
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于所请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_typecode
TypeCode get_typecode() throws TypeMismatch, InvalidValue
从此DynAny中提取TypeCode对象。- 异常
-
TypeMismatch
- 如果DynAny中的访问组件的类型不等于请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_longlong
long get_longlong() throws TypeMismatch, InvalidValue
从DynAny中提取长的值。 IDL长长数据类型映射到Java长数据类型。- 异常
-
TypeMismatch
- 如果DynAny中的访问组件的类型不等同于请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_ulonglong
long get_ulonglong() throws TypeMismatch, InvalidValue
从DynAny中提取长的值。 IDL unsigned long long数据类型映射到Java long数据类型。- 异常
-
TypeMismatch
- 如果DynAny中所访问的组件的类型不等同于所请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_wchar
char get_wchar() throws TypeMismatch, InvalidValue
从DynAny中提取长的值。 IDL wchar数据类型映射到Java字符数据类型。- 异常
-
TypeMismatch
- 如果DynAny中所访问的组件的类型不等同于所请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_wstring
String get_wstring() throws TypeMismatch, InvalidValue
从此DynAny中提取字符串值。 使用这种方法提取有界和无界的字符串。- 异常
-
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
-
get_any
Any get_any() throws TypeMismatch, InvalidValue
提取由DynAny表示的Any中包含的任何值。- 异常
-
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_dyn_any
DynAny get_dyn_any() throws TypeMismatch, InvalidValue
提取由该DynAny表示的Any中包含的Any值,并将其返回包装到新的DynAny中。- 异常
-
TypeMismatch
- 如果DynAny中访问的组件的类型不等于请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
get_val
Serializable get_val() throws TypeMismatch, InvalidValue
从此DynAny中提取可序列化的对象。 IDL ValueBase类型映射到Java可序列化类型。- 异常
-
TypeMismatch
- 如果DynAny中访问的组件的类型不等同于所请求的类型。 -
TypeMismatch
- 如果在当前组件本身具有组件的DynAny上调用 -
InvalidValue
- 如果此DynAny具有组件但当前位置为-1
-
seek
boolean seek(int index)
将当前位置设置为索引。 当前位置被索引为0到n-1,也就是说,索引零对应于第一个分量。 如果结果当前位置指示DynAny的一个组件,则该操作返回true,如果index表示与组件不对应的位置,则返回false。 以负指数来电寻求是合法的。 它将当前位置设置为-1,表示没有组件并返回false。 传递不具有相应位置的组件的DynAny的非负值索引值将当前位置设置为-1并返回false。
-
rewind
void rewind()
相当于seek(0)。
-
next
boolean next()
将当前位置提前到下一个组件。 当结果当前位置指示组件时,操作返回true,否则返回false。 假返回值将当前位置保留为-1。 在没有组件的DynAny上调用next将当前位置保留为-1,并返回false。
-
component_count
int component_count()
返回DynAny的组件数。 对于没有组件的DynAny,它返回零。 操作仅计算顶层的组件。 例如,如果在具有单个成员的DynStruct上调用component_count,则返回值为1,而与成员的类型无关。- 对于序列,操作返回当前数量的元素。
- 对于结构,异常和值类型,操作返回成员数。
- 对于数组,操作返回元素的数量。
- 对于工会,如果标识符指示命名成员处于活动状态,则操作返回2,否则返回1。
- 对于DynFixed和DynEnum,操作返回零。
-
current_component
DynAny current_component() throws TypeMismatch
返回当前位置的组件的DynAny。 它不会提升当前的位置,所以重复调用current_component,而不需要中间呼叫来回滚,接下来或者寻求返回相同的组件。 返回的DynAny对象引用可用于获取/设置当前组件的值。 如果当前组件表示复杂类型,则可以根据TypeCode来缩小返回的引用以获取对应于复杂类型的接口。 调用不具有组件(如DynEnum或空异常)的DynAny上的current_component会引发TypeMismatch。 在当前位置为-1的DynAny上调用current_component返回零参考。 迭代操作与current_component一起可用于动态组合任何值。 创建动态后,可以使用DynStruct,current_component和next来初始化所有组件的值。 一旦动态值完全初始化,to_any将创建相应的任何值。- 异常
-
TypeMismatch
- 如果在不能包含组件的DynAny上调用,例如DynEnum或空的异常
-
-