4

私は全体を見てきましたが、[a b] = methods(classname)文書化されていません。つまり、単一変数の出力は文書化されていますが、2変数の出力は文書化されていません。MATLABやドキュメント化されていないmatlab、さらにはここにもドキュメントがありません。多分私はそれを逃しましたか?

charたとえば、MATLABクラスで呼び出すと

[a b] = methods(char); 

次にa、charのメソッドのリストでありb[]

しかし...

Javaクラスの場合、bいくつかの有用な値を取ります。javaClassそれがJavaクラスまたはJavaクラス名であると想定します。

通常、私はまたはを呼び出しa = method(javaClass)ますa = method(javaClass,'-full')。しかし、私も電話できることに気づきました

[a b] = method(javaClass)

私がする時:

  • aすべてのクラスのメソッド名の一意のリストを含むセルです。(予想通り)
  • bは文字列のNx6セルで、各列は以下を表します。
    1. 'static'静的な場合、[]それ以外の場合。
    2. 完全修飾リターンクラス
    3. メソッド名
    4. 完全修飾メソッド名
    5. 入力パラメーター(括弧内)、または単に()
    6. '完全に.qualified.exception.nameをスローします'、または[]

例:

[a b] = method(java.lang.Integer);

次に、、aなどの単純な名前を含む<32x1セル>です。'Integer''bitCount'

ただし、bは各関数の各バリエーションを含む<43x6セル>です。たとえば、valueOf関数の1つは次のように表示されます

COL  VALUE
1.   static
2.   java.lang.Integer
3.   valueOf
4.   java.lang.Integer.valueOf
5.   (java.lang.String)
6.   throws java.lang.NumberFormatException`

だから、ここに私の質問があります:

主な質問:これは完全に安全ではありませんか?文書化されていないので、私はそう思います。ただし、複製する必要がないようにすると便利な組み込み機能がいくつか提供されます。解析の回避策は厄介ではありませんが、この機能はすでにここにあります。

これはどこから来たのですか?つまり、これは実際にはMATLAB関数からのものですか、それとも使用しているJava関数がありますか?

誰かがそれを使用しますか?または(メインの質問のように)それは避けるべきですか?

これに関するドキュメントはありますか?この投稿を超えて私は意味します。つまり、確かに、それは単純な機能のように見えます....そして、これは誰にとっても重要であるほど興味深いものですか?

私はMATLAB2011bを使用していますが、この機能はMATLABの新しいバージョン(2013a)にもまだ存在しますか?

4

2 に答える 2

5

MATLAB独自のクラス(classdefスタイル)の場合、メタデータシステムを使用して同様の情報を取得できます。

mc = ?timer
mc.MethodList

上で示した使用法はmethods、Javaクラスとオブジェクトに特に役立つようです。methodsviewの2つの出力を内部的に使用する関数のソースコードを調べますmethods

edit methodsview

メソッドビュー

于 2013-03-20T23:25:58.443 に答える
4

Matlabには、そのような文書化されていないナゲットが多数含まれているため、2009年からUndocumentedMatlab.com Webサイトに文書化しています(このサイトは数日前に4歳の誕生日を迎えました)。これらのほとんどは(私が本を書いた)Matlab-Javaインターフェースに関連していますが、非常に便利な純粋なMatlabの文書化されていない機能も多数あります。

これらの機能の一部は、将来のMatlabとの互換性の点で他の機能よりもリスクが高くなります。の2番目の出力引数はmethodsリスクが低いと考えています。それは確かに文書化されていませんが、何年もの間(少なくとも10年、おそらくそれ以上)現在の形で存在してきました。R2013aの時点でまだ利用可能です。Amroが述べたように、それは内部methodsview機能によって使用され、完全に安全に使用できます。

MatlabでJavaオブジェクトに関する情報を取得することに興味がある場合は、またはのいずれかよりもはるかに多くの情報を提供するuiinspectまたはユーティリティの使用を検討してください。両方とも、Java、COM、Matlabクラス、HGハンドル(HGのみ)など、複数のタイプのオブジェクトハンドルとクラス名で機能します。の技術的な説明はここにあります。checkClassmethodsmethodsviewuiinspectcheckClassuiinspectuiinspect


uiinspectJava、COM、およびMatlabハンドルで使用されている: Java、COM、Matlabハンドルで使用されている<code> uiinspect </ code>


checkClassJavaオブジェクトまたはクラス名で使用されている:

Javaオブジェクトで使用されている<code>checkClass</ code>

于 2013-03-26T19:58:21.050 に答える