外部インタフェース/API    

Javaオブジェクトの作成と利用

MATLABでは、そのクラスのコンストラクタの1つを呼び出すことによって、Javaオブジェクトを作成します。その後、コマンドとプログラミングステートメントを使って、これらのオブジェクトに対して操作します。JavaオブジェクトをMAT-ファイルに保存したり、その後のセッションでMATLABにリロードすることも可能です。

本節は、以下のトピックスを説明します。

Javaオブジェクトの作成

クラスと同じ名前のJavaクラスコンストラクタを呼び出すことによって、JavaオブジェクトをMATLABで作成します。たとえば、つぎのコンストラクタは、タイトルが'Frame A'であり、他のプロパティはデフォルト値であるFrameオブジェクトを作成します。

新規のオブジェクトframeを表示するのは、以下のステートメントです。

本章のすべてのプログラミングの例題は、Javaオブジェクトコンストラクタを含みます。たとえば、「URLの読み込み」は、以下のコンストラクタを使ってjava.net.URLオブジェクトを作成します。

javaObject関数の利用

ある状況においては、javaObject関数を使ってJavaオブジェクトを作成する必要があります。つぎのシンタックスは、x1,...,xnに一致する引数リストを使って、クラスclass_name用にJavaコンストラクタを呼び出し、新規オブジェクトJを出力します。

たとえば、クラスjava.lang.StringのJavaオブジェクトを作成し、出力するには、以下を使います。

javaObject関数を使って、以下のことが可能です。

デフォルトのMATLABコンストラクタのシンタックスは、入力クラス名のセグメントが31文字より長くないことが必要です(クラス名セグメントは、ピリオドの前、間、後のクラス名の部分です。たとえば、クラスjava.lang.Stringには、3つのセグメントがあります)。31文字を超えるすべてのクラス名セグメントは、MATLABにより打ち切られます。まれな場合に、この長さのクラス名を使う必要があるときは、javaObjectを使ってクラスをインスタンスしなければなりません。

javaObject関数を使って、実行時に作成されるオブジェクトに対するJavaクラスを指定することも可能です。この状況において、クラス名の引数の代わりに文字列変数を使ってjavaObjectを呼び出します。

通常の場合、インスタンスするクラスが開発時にわかっているときは、MATLABコンストラクタのシンタックスを使うとより便利です。たとえば、java.lang.Stringオブジェクトを作成するには、以下を使います。

Javaオブジェクトは、MATLABのリファレンスです

MATLABでは、Javaオブジェクトはリファレンスであり、MATLABのcopy-on-assignmentおよびpass-by-valueのルールに従いません。たとえば、

上記の2番目のステートメントで、変数newFrameRefは、origFrameの2番目のリファレンスであり、オブジェクトのコピーではありません。上記の例のつぎのコードにおいて、newFrameRefでのオブジェクトの変更は、origFrameのオブジェクトを変更します。この影響は、オブジェクトがMATLABコードによって、あるいはJavaコードによって変更されるかどうかにより発生します。

つぎの例は、origFramenewFrameRefが両方共同じ要素のリファレンスであることを示します。フレームのサイズがあるリファレンス(newFrameRef)によって変更されるとき、変更はもう1つのリファレンス(origFrame)に反映されます。


 MATLABでのJavaクラス名の簡略化 Javaオブジェクトの結合