外部インタフェース/API    

Javaオブジェクトを渡す

特定のJavaクラスに属する引数を持つメソッドを呼び出すとき、そのクラスのインスタンスのオブジェクトを渡す必要があります。下記の例で、java.awt.Menuクラスに属するaddメソッドは、引数としてjava.awt.MenuItemクラスのオブジェクトが必要です。このメソッド宣言は、以下の通りです。

この例は、「組み込みデータタイプを渡す」の説明の例で作成されたフレームに対して操作します。このコードの2,3,4行目は、既存のウィンドウフレームに貼り付けるメニューのアイテムを追加します。menu1.addの呼び出しの各々において、java.awt.MenuItem Javaクラスであるオブジェクトが渡されます。

クラスjava.lang.Objectのオブジェクトの取り扱い

呼び出されるメソッドがjava.lang.Objectクラスの引数を持つときには、特殊な場合が存在します。このクラスは、Javaクラス階層のルートなので、引数内の任意のクラスのオブジェクトを渡すことができます。以下のハッシュテーブルの例は、異なるクラスに属するオブジェクトを、java.lang.Objectの引数を要求する共通のメソッドputに渡します。putに対するメソッドの宣言は、以下の通りです。

つぎのMATLABコードは、異なるタイプのオブジェクト(boolean, float, string)をputメソッドに渡します。

java.lang.Objectを受け取るメソッドに引数を渡すときには、組み込みデータタイプのオブジェクトに対するクラス名を指定する必要はありません。上記の例の3行目は、41.287はクラスjava.lang.Floatであることを指定します。これは省略が可能で、下記の例のように単に41.287とすることができます。そのため、MATLABは各引数に対して最もマッチするJavaオブジェクト表現を選択して、各オブジェクトを作成します。上記の例の3回のputの呼び出しは、つぎのように書き直すことができます。

配列にオブジェクトを渡す

Javaメソッドに渡すことが可能なJavaオブジェクト配列には、Java配列とMATLABセル配列の2つのタイプがあります。

オブジェクトが既に配列内に置かれている場合は(Javaコンストラクタから出力される配列あるいはjavaArray関数によってMATLABで作成された配列)、呼び出されるメソッドの引数のように、単純に渡します。これは、既にJava配列なので、MATLABは変換を行いません。

Java配列にないオブジェクトを持つ場合は、MATLABは、MATLABセル配列にそれらを渡すことができます。この場合、MATLABは引数を渡す前にセル配列をJava配列に変換します。

つぎの例は、クラスjava.awt.Pointの配列を受け取るユーザ定義クラスのmapPointsメソッドを示します。これに対するメソッドの宣言は、以下の通りです。

下記のMATLABコードは、4つのJava Pointオブジェクトを含む2行2列のセル配列を作成します。セル配列がmapPointsメソッドに渡されるとき、MATLABはセル配列をタイプjava.awt.PointのJava配列に変換します。

Javaオブジェクトのセル配列の取り扱い

MATLABシンタックス{a1,a2,...}を使ってJavaオブジェクトのセル配列を作成します。通常の方法であるシンタックスa{m,n,...}で、Javaオブジェクトのセル配列にインデックスを付けます。

つぎの例は、2つのFrameオブジェクト、frame1frame2のセル配列を作成し、変数framesを割り当てます。

つぎのステートメントは、セル配列frameArrayの要素{1,2}を変数fに割り当てます。


 文字列引数を渡す その他のデータ変換のトピックス