パッケージ org.omg.DynamicAny
実行時にany
に関連付けられたデータ値のトラバース、およびデータ値の基本的な構成要素の抽出を可能にするクラスとインタフェースを提供します。
any
は、そのany
の型について静的な情報がない(IDLコンパイラがその型について生成したコードが、オブジェクト実装を含めてコンパイルされていない)プログラムに渡すことができます。 このため、オブジェクトはany
を受け取っても、それを使用するための移植性のあるメソッドがないことになります。
DynAny
を使うと、any
のデータ値のトラバースを実行時に行い、データ値の基本的な構成要素を抽出できます。 これは、強力なジェネリック・サーバー(ブリッジ、フィルタリングをサポートするイベント・チャネル)を作成する場合に役立ちます。 また、型に関する静的な情報を持たずに、実行時にany
を構築することもできます。 これは、ジェネリック・クライアント(ブリッジ、ブラウザ、デバッガ、ユーザー・インタフェース・ツール)を作成する場合に役立ちます。
Any
の値は、DynAny
オブジェクトを通して動的に解釈(トラバース)および構築できます。 DynAny
オブジェクトはデータ値に関連付けられますが、このデータ値はAny
に挿入された値のコピーに対応します。 DynAny
オブジェクトは、コンポーネントのDynAny
の順序付けられたコレクションとみなすことができます。 DynAny
がlong
などの基本型を表す場合、または空の例外のようにコンポーネントのない型を表す場合は、コンポーネントの順序付けられたコレクションは空になります。
それぞれのDynAny
オブジェクトで、そのDynAny
のコンポーネントのコレクション内における現在位置が把握されます。 現在位置は、0からn-1のインデックス値で示されます(nはコンポーネントの数)。 -1という特別なインデックス値もあり、これは現在位置がどこも指し示していないことを意味します。 現在位置を持つことのできない値(空の例外など)の場合、インデックス値は -1で固定されます。 DynAny
がコンポーネントを持つ値で初期化された場合、インデックスも0に初期化されます。 初期化されていないDynAny
(DynAny
に値がないが、コンポーネントを持つことのできるTypeCode
がある)が作成された場合は、現在位置はDynAny
によって表される値の型によって異なります。 現在位置は、新規作成されたDynAny
のコンポーネントがデフォルト値を持てるかどうかによって0または -1になります。
rewind
、seek
およびnext
の繰返し操作を使用すると、現在位置が変更できます。current_component
操作は、現在位置のコンポーネントを返します。 component_count
操作はDynAny
のコンポーネントの数を返します。 これらの操作をあわせて使用すると、コンポーネントの内容を(再帰的に)調べるなど、DynAny
のコンポーネントに対して反復処理を行えます。
構築型と関連付けられたDynAny
オブジェクトを、構築型DynAny
オブジェクトと呼びます。 IDLの各種構築型(fixed、enum、struct、sequence、union、array、exception、値型)のそれぞれについて、DynAny
インタフェースから継承されたインタフェースがあります。 構築型DynAny
オブジェクトは、DynAny
オブジェクトを新規作成するための操作をエクスポートします。作成されるオブジェクトはそれぞれ構築型のデータ値のコンポーネントに関連付けられます。 たとえば、DynStruct
はstruct
値と関連付けられます。 つまり、DynStruct
は、構造体のメンバーごとにコンポーネントが1つずつあるような、順序付けられたコレクションを所有するとみなすことができます。 DynStruct
オブジェクトは、struct
のメンバーに関連付けられるDynAny
オブジェクトを新規作成するための操作をエクスポートします。
別の(構築型) DynAny
からDynAny
オブジェクトを得た場合(たとえばDynStruct
から作成された、構造体メンバーを表すDynAny
)、そのメンバーであるDynAny
は、DynStruct
に論理的に含まれることになります。 insert
またはget
操作を呼び出しても、現在位置は変更されません。 最上位のDynAny
オブジェクト(別のDynAny
のコンポーネントではないもの)を破棄すると、そのコンポーネントのDynAny
オブジェクトも破棄されます。 最上位ではないDynAny
を破棄した場合は何も起こりません。 破棄された最上位のDynAny
、またはその下位オブジェクトに対して操作を呼び出すと、OBJECT_NOT_EXISTがスローされます。 DynAny
を破棄したあとも、それに関連付けられるデータ値のコンポーネントを操作するには、まずコンポーネントのDynAny
を作成してから、作成したDynAny
オブジェクトのコピーを作成します。
DynAny
オブジェクトの動作は、割り当てられたメモリー空間とアクセス速度に関して効果的な実装を実現できるように定義されています。 DynAny
オブジェクトは、実行時にany
から抽出された値のトラバースや、any
の値の構築を行うために使用することが想定されています。 ほかの用途での使用はお勧めできません。
DynAnyオブジェクトの操作
Insert
とget
の各操作は、基本DynAny
オブジェクトの操作に必要ですが、構築型DynAny
オブジェクトの操作にも役立ちます。 構築型DynAny
オブジェクトに基本データ型の値を挿入すると、DynAny
オブジェクトに関連付けられた構築型データ値の現在のコンポーネントを初期化することになります。 たとえば、DynStruct
でinsert_boolean
を呼び出すと、関連するstruct
のデータ値の現在位置にboolean
のデータ値が挿入されます。 値のTypeCode
がDynAny
に含まれるTypeCode
と同じである場合、値の挿入と抽出を通して型は同じになります。DynAny
にコンポーネントがある場合は、値の挿入と抽出における型は現在位置のDynAny
のTypeCode
と同じになります。
基本的なオペレーションには次のものがあります。
- insert_boolean、get_boolean
- insert_char、get_char
- insert_short、get_short
- insert_ushort、get_ushort
- insert_long、get_long
- insert_ulong、get_ulong
- insert_double、get_double
- insert_string、get_string
- insert_reference、get_reference
- insert_typecode、get_typecode
- insert_longlong、get_longlong
- insert_ulonglong、get_ulonglong
- insert_longdouble、get_longdouble
- insert_wchar、get_wchar
- insert_wstring、get_wstring
- insert_any、get_any
- insert_dyn_any、get_dyn_any
- insert_val、get_val
- insert_octet、get_octet
- insert_float、get_float
- get_value
- get_as_string
- get_as_ulong
- get_members
- get_members_as_dyn_any
- get_discriminator
- get_length
- get_elements
- get_elements_as_dyn_any
- get_boxed_value
- get_boxed_value_as_dyn_any
DynAny
オブジェクトとDynAnyFactory
オブジェクトは、それらが作成および使用されるプロセスに対してローカルであると想定されています。 つまり、DynAny
およびDynAnyFactory
オブジェクトへの参照をほかのプロセスにエクスポートしたり、ORB.object_to_string()
で外部化したりすることはできません。 実行を試みるとMARSHALシステム例外が発生します。 IDLにインタフェースが指定されているため、DynAny
オブジェクトでは標準のorg.omg.CORBA.Object
インタフェースに定義されている操作をエクスポートできます。 ただし、Object
インタフェースを通してエクスポートした操作を呼び出そうとすると、標準NO_IMPLEMENT例外が発生することがあります。 DynAny
オブジェクトをDIIと使用しようとすると、NO_IMPLEMENT例外が発生する場合があります。
パッケージの仕様
Java(TM) Platform, Standard Edition 6 ORBが準拠する公式の仕様のサポート・セクションの正確なリストは、「Java(TM) SE 6での正式なCORBAサポート仕様」を参照してください。
- 導入されたバージョン:
- 1.4
-
インタフェースのサマリー インタフェース 説明 DynAny Anyの値は、DynAnyオブジェクトを通して動的に解釈(トラバース)および構築できます。DynAnyFactory DynAnyオブジェクトは、DynAnyFactoryオブジェクトでオペレーションを呼び出すことで作成できます。DynAnyFactoryOperations DynAnyオブジェクトは、DynAnyFactoryオブジェクトでオペレーションを呼び出すことで作成できます。DynAnyOperations Anyの値は、DynAnyオブジェクトを通して動的に解釈(トラバース)および構築できます。DynArray DynArrayオブジェクトによって、IDLの配列の操作がサポートされます。DynArrayOperations DynArrayオブジェクトによって、IDLの配列の操作がサポートされます。DynEnum DynEnumオブジェクトによって、IDLの列挙値の操作がサポートされます。DynEnumOperations DynEnumオブジェクトによって、IDLの列挙値の操作がサポートされます。DynFixed DynFixedオブジェクトによって、IDLのfixed値の操作がサポートされます。DynFixedOperations DynFixedオブジェクトによって、IDLのfixed値の操作がサポートされます。DynSequence DynSequenceオブジェクトによって、IDLのシーケンスの操作がサポートされます。DynSequenceOperations DynSequenceオブジェクトによって、IDLのシーケンスの操作がサポートされます。DynStruct DynStructオブジェクトによって、IDL構造体および例外値の操作がサポートされます。DynStructOperations DynStructオブジェクトによって、IDL構造体および例外値の操作がサポートされます。DynUnion DynUnionオブジェクトによって、IDLの共用体の操作がサポートされます。DynUnionOperations DynUnionオブジェクトによって、IDLの共用体の操作がサポートされます。DynValue DynValueオブジェクトによって、IDLの非boxed値型の操作がサポートされます。DynValueBox DynValueBoxオブジェクトによって、IDLのboxed値型の操作がサポートされます。DynValueBoxOperations DynValueBoxオブジェクトによって、IDLのboxed値型の操作がサポートされます。DynValueCommon DynValueCommonは、DynValueおよびDynValueBoxインタフェースでサポートされるオペレーションを提供します。DynValueCommonOperations DynValueCommonは、DynValueおよびDynValueBoxインタフェースでサポートされるオペレーションを提供します。DynValueOperations DynValueオブジェクトによって、IDLの非boxed値型の操作がサポートされます。 -
クラスのサマリー クラス 説明 _DynAnyFactoryStub DynAnyオブジェクトは、DynAnyFactoryオブジェクトでオペレーションを呼び出すことで作成できます。_DynAnyStub Anyの値は、DynAnyオブジェクトを通して動的に解釈(トラバース)および構築できます。_DynArrayStub DynArrayオブジェクトによって、IDLの配列の操作がサポートされます。_DynEnumStub DynEnumオブジェクトによって、IDLの列挙値の操作がサポートされます。_DynFixedStub DynFixedオブジェクトによって、IDLのfixed値の操作がサポートされます。_DynSequenceStub DynSequenceオブジェクトによって、IDLのシーケンスの操作がサポートされます。_DynStructStub DynStructオブジェクトによって、IDL構造体および例外値の操作がサポートされます。_DynUnionStub DynUnionオブジェクトによって、IDLの共用体の操作がサポートされます。_DynValueStub DynValueオブジェクトによって、IDLの非boxed値型の操作がサポートされます。AnySeqHelper org/omg/DynamicAny/AnySeqHelper.java。DynAnyFactoryHelper DynAnyオブジェクトは、DynAnyFactoryオブジェクトでオペレーションを呼び出すことで作成できます。DynAnyHelper Anyの値は、DynAnyオブジェクトを通して動的に解釈(トラバース)および構築できます。DynAnySeqHelper org/omg/DynamicAny/DynAnySeqHelper.java。DynArrayHelper DynArrayオブジェクトによって、IDLの配列の操作がサポートされます。DynEnumHelper DynEnumオブジェクトによって、IDLの列挙値の操作がサポートされます。DynFixedHelper DynFixedオブジェクトによって、IDLのfixed値の操作がサポートされます。DynSequenceHelper DynSequenceオブジェクトによって、IDLのシーケンスの操作がサポートされます。DynStructHelper DynStructオブジェクトによって、IDL構造体および例外値の操作がサポートされます。DynUnionHelper DynUnionオブジェクトによって、IDLの共用体の操作がサポートされます。DynValueHelper DynValueオブジェクトによって、IDLの非boxed値型の操作がサポートされます。FieldNameHelper org/omg/DynamicAny/FieldNameHelper.java。NameDynAnyPair org/omg/DynamicAny/NameDynAnyPair.java。NameDynAnyPairHelper org/omg/DynamicAny/NameDynAnyPairHelper.java。NameDynAnyPairSeqHelper org/omg/DynamicAny/NameDynAnyPairSeqHelper.java。NameValuePair org/omg/DynamicAny/NameValuePair.java。NameValuePairHelper org/omg/DynamicAny/NameValuePairHelper.java。NameValuePairSeqHelper org/omg/DynamicAny/NameValuePairSeqHelper.java。