MatlabからJavaを呼び出すときにあいまいさを避ける方法は?
質問
MatlabからJavaを呼び出すときに
object.method(arg1,...,argn)
は同等です
method(object, arg1,...,argn)
ここでの問題は、JavaからMatlabへの変換を行うmethod.m
もあることです(たとえば、String[]
を文字列のセルに変換する)。私のmethod(object, arg1,...,argn)
は次のように見えます
function result = method(object, arg1,...argn)
intermediate = object.method(arg1,...argn);
result = translate(intermediate);
.m
を呼び出すと、object.method
修正は簡単です。Javaメソッドと<=>ファイルの両方に同じメソッド名を使用しないでください。 しかし、別の方法はありますか?同じ名前でどのメソッドが呼び出されるかを知るにはどうすればよいですか? Javaメソッドの代わりに<=>を呼び出すことを保証する方法はありますか? <=>構文を使用するだけで、Javaメソッドへの呼び出しを簡単に保証できます。
補足として、<=>エディターは<=>呼び出しで<=>にリンクしますが、デバッグ時にはJavaメソッドを呼び出します。
解決
MATLABのディスパッチ方法に関するいくつかの問題に直面している可能性があります...
同じ名前が与えられたときにどのメソッドが呼び出されるかを知るにはどうすればよいですか
このセクションでは、同じ名前の関数が複数ある場合の関数の選択方法について説明しています。ドキュメントから:<!> quot;関数の優先順位は、MATLABパス上の関数のタイプと位置に基づいて、ある関数の別の関数の優先順位を決定します。<!> quot;この順序(最高から最低まで)を以下に示します。
- サブ関数
- プライベート関数
- クラスコンストラクター
- オーバーロードされたメソッド
- 現在のディレクトリ内の関数
- パス上の他の場所で機能する
<!> quot; method.m <!> quot;の配置。関数は、<!> quot; method(object、...)<!> quot;構文。
Javaメソッドの代わりにmethod.mを呼び出す方法はありますか?
今、あなたの<!> quot; method.m <!> quot;を推測しています。現在のディレクトリまたはパス上の他の場所(2つの最低優先順位の位置)にあります。 <!> quot; method.m <!> quot;を作成した場合それを呼び出す大きなコード内のサブ関数 、またはプライベートディレクトリに配置できる場合を呼び出す必要のあるすべての関数から呼び出すことができます。<!> quot; method(object、.. 。)<!> quot;構文。
これがお役に立てば幸いです!
他のヒント
Hmmmmmmmmm .... @method
を使用して関数ハンドルを取得してから、 feval()
関数ハンドル。
それはうまくいくかもしれませんが、よくわかりません。...