外部インタフェース/API | ![]() ![]() |
データをオーバロードメソッドに渡す
Javaオブジェクトに対してオーバロードメソッドを呼び出すとき、MATLABは、ユーザ呼び出しが渡す引数とメソッドに対して定義された引数を比較することによって、呼び出すメソッドを決定します。この説明では、メソッドはコンストラクタを含みます。呼び出すメソッドを決定するとき、MATLABはオブジェクト配列またはセル配列に関する変換以外について、Javaの変換規則に従って呼び出し引数をJavaメソッドタイプに変換します。「配列にオブジェクトを渡す」を参照してください。
呼び出すメソッドを決定する方法
上記の全ての条件が満たされる場合は、MATLABはメソッドを呼び出します。 オーバーロードされたメソッドの呼び出しにおいて、2つ以上の候補がある場合は、MATLABは呼び出し引数にもっとも合う引数を持つものを選択します。最初に、MATLABは、渡される引数と互換性のない引数をもつメソッドを除外します(たとえば、メソッドが 残りのメソッドの中で、MATLABは、すべての引数の適合度の値の総和である、最高の適合度を持つものを選択します。各引数に対する適合度の値は、ベースタイプの適合度からMATLAB配列の次元とJava配列の次元との差分を引いたものです(配列の次元は、「配列の次元の変換への影響」で説明します)。2つのメソッドが同じ適合度値をもつ場合は、javaクラスで最初に定義されたメソッドが選択されます。
double
の引数を持ち、渡される引数がchar
である場合)。
例題 - オーバーロードされたメソッドの呼び出し
関数がjava.io.OutputStreamWriter
オブジェクトosw
を作成し、オブジェクトについてメソッドを呼び出すと仮定します。
osw.write('Test data', 0, 9);
MATLABは、クラスjava.io.OutputStreamWriter
が3つのwrite
メソッドを定義することを見つけます
public void write(int c); public void write(char[] cbuf, int off, int len); public void write(String str, int off, int len);
最初のwrite
メソッドは引数を1つだけを受け取るので、MATLABはそれを拒否します。その後、MATLABは残りの2つのwrite
メソッドの適合度を評価します。これらは、以下で説明する第一引数のみが異なります。
これらの2つのうちの最初のwrite
メソッドにおいて、第一引数は、ベースタイプchar
によって定義されます。表「MATLABタイプからJavaタイプへの変換」は、呼び出し引数のタイプ(MATLABのchar
)に対して、Javaタイプchar
は値6を持つことを示します。呼び出し引数とJava引数の次元の違いはありません。そのため、第一引数の適合度値は6です。
他のwrite
メソッドにおいて、第一引数はJavaタイプのString
で、適合度値は7です。Java引数の次元は0なので、Java引数と呼び出し引数との次元の差は1です。そのため、第一引数に対する適合度値は6です。
これらの2つのwrite
メソッドに対する適合度値は等しいので、MATLABは(char[]
第一引数を持つ)クラス定義で最初にリストされたメソッドを呼び出します。
![]() | その他のデータ変換のトピックス | Javaメソッドから出力されるデータの扱い | ![]() |