ActiveX クライアント・プログラミング: 配列を渡すためのヒント
Java™ の配列と Visual Basic や VBScript のような自動化コンテナーの配列は、非常によく似ています。このトピックでは、これらのコンテナー間で配列をやりとりする際に考慮すべきいくつかの重要な点を説明します。
以下に示すのは、これらのコンテナー間で配列をやりとりする際に考慮すべきいくつかの重要な点です。
- Java 配列は、型を混合できません。
Java のすべての配列には単一の型が含まれているため、
バリアントの配列を Java 配列に渡すときは、
バリアント配列内のエレメントがすべて同じ基本タイプであることを確認する必要があります。
例えば、Visual Basic コードでは以下のようになります。
... Dim VariantArray(1) as Variant VariantArray(0) = CLng(123) VariantArray(1) = CDbl(123.4) oMyJavaObject.foo(VariantArray) ' Illegal! VariantArray(0) = CLng(123) VariantArray(1) = CLng(1234) oMyJavaObject.foo(VariantArray) ' This works
- プリミティブ型の配列は、プリミティブ・データ型変換で定義される規則を使用して変換されます。
- Java オブジェクトの配列は、JObjectProxy オブジェクトの配列によって処理されます。
- JObjectProxy オブジェクトの配列は、完全に初期化され、 正しく関連付けられた Java 型でなければなりません。 Visual Basic 内の配列を初期化する場合 (例えば、 Dim oJavaObjects(1) をオブジェクトとして)、各オブジェクトを JObjectProxy に設定してから、 その配列を Java オブジェクトに送信する必要があります。 ブリッジは、ヌルの型や空のオブジェクト値を判別することはできません。
- Java メソッドから配列を受け取る場合、下限は常にゼロになります。 Java メソッドは、ゼロ・ベースの配列のみをサポートします。
- ネストされた配列や多次元の配列は、 Visual Basic および VBScript コンテナーではゼロ・ベースの多次元配列として扱われます。
- 未初期化配列や配列型はサポートされていません。 オブジェクトの配列をパラメーターとして使用する Java メソッドを呼び出す場合は、 JObjectProxy オブジェクトの配列を 完全に初期化する必要があります。