寻找洞察未经证实的使用MATLAB的方法()函数

Cel*_*lso 4 matlab matlab-class

我看了一遍,但没有看到[a b] = methods(classname)记录.我的意思是,记录单变量输出,但不记录双变量输出.我在MATLAB或未记录的matlab中看到没有文档,甚至在这里.也许我错过了?

如果我把它用MATLAB类,char例如

[a b] = methods(char); 
Run Code Online (Sandbox Code Playgroud)

然后a是char的方法列表,b[]

但...

对于java类,b需要一些有用的值.假设这javaClass是一个java类或java类名.

通常情况下,我会打电话a = method(javaClass)a = method(javaClass,'-full').但是,我注意到我也可以打电话

[a b] = method(javaClass)

当我做:

  • a是一个包含所有类方法名称的唯一列表的单元格.(如预期的那样)
  • b 是一个N x 6个字符串单元格,每列代表:
    1. 'static'如果是静态的,[]否则
    2. 完全合格的回归课程
    3. 方法名称
    4. 完全限定的方法名称
    5. 输入参数(在括号中)或仅 ()
    6. 'throws fully.qualified.exception.name ',或[]

例:

[a b] = method(java.lang.Integer);
Run Code Online (Sandbox Code Playgroud)

然后,a是<32x1细胞>含有简单的名称,诸如'Integer','bitCount'

但是,b<43x6单元格>包含每个函数的每个变体.例如,valueOf函数之一将显示

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

所以,这是我的问题:

主要问题:这完全不安全吗?因为它没有证件,我会这么认为; 但是它为我提供了一些内置的功能,不用复制就可以了.解析的解决方法并不可恶,但此功能已经存在.

这是从哪里来的?也就是说,这实际上是来自MATLAB函数,还是它正在使用某些Java函数?

有没有人用它?或者(如在主要问题中)应该避免吗?

有关于此的文件吗?除了这篇文章,我的意思是.我的意思是,当然,它似乎是一个直接的功能......对于任何重要的人来说,这是否足够有趣?

我在MATLAB 2011b上,这个功能在MATLAB(2013a)的更高版本中是否仍然存在?

Amr*_*mro 5

对于MATLAB自己的类(classdef样式),您可以使用元数据系统来获取类似的信息:

mc = ?timer
mc.MethodList
Run Code Online (Sandbox Code Playgroud)

methods上面显示的用法似乎对Java类和对象特别有用.检查methodsview内部使用两个输出的函数的源代码methods.

edit methodsview
Run Code Online (Sandbox Code Playgroud)

methodsview