JavaTM 2 Platform
Standard Ed. 5.0

パッケージ org.omg.DynamicAny

実行時に any に関連付けられたデータ値のトラバース、およびデータ値の基本的な構成要素を抽出するためのクラスとインタフェースを提供します。

参照先:
          説明

インタフェースの概要
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。
 

パッケージ org.omg.DynamicAny の説明

実行時に any に関連付けられたデータ値のトラバース、およびデータ値の基本的な構成要素を抽出するためのクラスとインタフェースを提供します。

any は、その any の型について静的な情報がない (IDL コンパイラがその型について生成したコードが、オブジェクト実装を含めてコンパイルされていない) プログラムに渡すことができます。このため、オブジェクトは any を受け取っても、それを使用するための移植性のあるメソッドがないことになります。

DynAny を使うと、any のデータ値のトラバースを実行時に行い、データ値の基本的な構成要素を抽出することができます。これは、強力な汎用サーバ (ブリッジ、フィルタリングをサポートするイベントチャネル) を作成する場合に役立ちます。また、型に関する静的な情報を持たずに、実行時に any を構築することもできます。これは、汎用クライアント (ブリッジ、ブラウザ、デバッガ、ユーザインタフェースツール) を作成する場合に役立ちます。

Any の値は、DynAny オブジェクトを通して動的に解釈 (トラバース) および構築することができます。DynAny オブジェクトは、Any に挿入される値のコピーに対応するデータ値に関連付けられます。DynAny オブジェクトは、そのコンポーネントの DynAny の順序付けられたコレクションと見なすことができます。DynAnylong などの基本型を表す場合、または空の例外のようにコンポーネントのない型を表す場合は、コンポーネントの順序付けられたコレクションは空になります。

それぞれの DynAny オブジェクトで、その DynAny のコンポーネントのコレクション内における現在位置が把握されます。現在位置は、0 から n-1 のインデックス値で示されます (n はコンポーネントの数)。-1 という特別なインデックス値もあり、これは現在位置がどこも指し示していないことを意味します。現在位置を持つことのできない値 (空の例外など) の場合、インデックス値は -1 で固定されます。DynAny がコンポーネントを持つ値で初期化された場合、インデックスも 0 に初期化されます。初期化されていない DynAny (DynAny に値がないが、コンポーネントを持つことのできる TypeCode がある) が作成された場合は、現在位置は DynAny によって表される値の型によって異なり、新規作成された DynAny のコンポーネントがデフォルト値を持てるかどうかによって 0 または -1 になります。

rewindseek、および next の繰り返し操作を使用すると、現在位置が変更できます。current_component 操作は、現在位置のコンポーネントを返します。component_count 操作は DynAny のコンポーネントの数を返します。これらの操作を合わせて使えば、コンポーネントの内容を (再帰的に) 調べるなど、DynAny のコンポーネントに対して繰り返し処理を行うことができます。

構築型と関連付けられた DynAny オブジェクトを、構築型 DynAny オブジェクトといいます。IDL の各種構築型 (fixed、enum、struct、sequence、union、array、exception、値型) のそれぞれについて、DynAny インタフェースから継承されたインタフェースがあります。構築型 DynAny オブジェクトは、DynAny オブジェクトを新規作成するための操作をエクスポートします。作成されるオブジェクトは、それぞれ構築型のデータ値のコンポーネントに関連付けられます。たとえば、DynStructstruct 値と関連付けられます。つまり、DynStruct は、構造体のメンバごとにコンポーネントが 1 つあるような、順序付けられたコレクションを所有すると見なすことができます。DynStruct オブジェクトは、struct のメンバに関連付けられる DynAny オブジェクトを新規作成するための操作をエクスポートします。

別の (構築型) DynAny から DynAny オブジェクトを得た場合、たとえば DynStruct から作成された、構造体メンバを表す DynAny は、DynStruct に論理的に含まれることになります。insert または get 操作を呼び出しても、現在位置は変更されません。最上位の DynAny オブジェクト (別の DynAny のコンポーネントではないもの) を破棄すると、そのコンポーネントの DynAny も破棄されます。最上位ではない DynAny を破棄した場合は何も起こりません。破棄された最上位の DynAny、またはその下位オブジェクトに対して操作を呼び出すと、OBJECT_NOT_EXIST が発生します。DynAny を破棄したあとも、それに関連付けられるデータ値のコンポーネントを操作するには、まずコンポーネントの DynAny を作成してから、作成した DynAny オブジェクトのコピーを作成します。

DynAny オブジェクトの動作は、割り当てられたメモリ空間とアクセス速度に関して効果的な実装を実現できるように定義されています。DynAny オブジェクトは、実行時に any から抽出された値のトラバースや、any の値の構築を行うために使用することが想定されています。ほかの用途での使用はお勧めできません。

DynAny オブジェクトの操作

insertget の各操作は、基本 DynAny オブジェクトの操作に必要ですが、構築型 DynAny オブジェクトの操作にも役立ちます。構築型 DynAny オブジェクトに基本データ型の値を挿入すると、DynAny オブジェクトに関連付けられた構築型データ値の現在のコンポーネントを初期化することになります。たとえば、DynStructinsert_boolean を呼び出すと、関連する struct のデータ値の現在位置に boolean のデータ値が挿入されます。値の TypeCodeDynAny に含まれる TypeCode と同じである場合、値の挿入と抽出を通して型は同じになります。DynAny にコンポーネントがある場合は、値の挿入と抽出における型は現在位置の DynAnyTypeCode と同じになります。

基本的な操作には次のものがあります。

DynAny オブジェクトと DynAnyFactory オブジェクトは、それらが作成され使用されるプロセスに対してローカルであると想定されています。つまり、DynAny および DynAnyFactory オブジェクトへの参照をほかのプロセスにエクスポートしたり、ORB.object_to_string() で外部化したりすることはできず、実行を試みると MARSHAL システム例外が発生します。IDL にインタフェースが指定されているため、DynAny オブジェクトでは標準の org.omg.CORBA.Object インタフェースに定義されている操作をエクスポートできます。ただし、Object インタフェースを通してエクスポートした操作を呼び出そうとすると、標準 NO_IMPLEMENT 例外が発生することがあります。DynAny オブジェクトを DII と使用しようとすると、NO_IMPLEMENT 例外が発生する場合があります。

パッケージの仕様

CORBA の正式な仕様のうち、Java 2 Platform, Standard Edition, v.1.4 ORB が準拠しているセクションについては、「J2SE 1.4 における CORBA サポートの正式な仕様」を参照してください。

導入されたバージョン:
1.4

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。