如何将Java对象作为参数传递给MATLAB函数?

如何将Java对象作为参数传递给MATLAB函数?,java,matlab,Java,Matlab,我编写了一个Matlab类,用JDBC和java.sql中的东西实现了一个数据库 我需要知道一个ResultSet中有多少个结果,因此我编写了以下Matlab静态函数: methods (Static) function [numRecords] = numRecords(resultSet) numRecords = 0; if (~isempty(resultSet)) row = resultSet.getRow();

我编写了一个Matlab类,用JDBC和java.sql中的东西实现了一个数据库

我需要知道一个ResultSet中有多少个结果,因此我编写了以下Matlab静态函数:

methods (Static)

    function [numRecords] = numRecords(resultSet)
        numRecords = 0;
        if (~isempty(resultSet))
            row = resultSet.getRow();
            resultSet.beforeFirst();
            resultSet.last();
            numRecords = resultSet.getRow();
            resultSet.absolute(row);
        end
    end

end
myFcn(myDate,...other input arguments...);
但当我尝试调用它时,会收到以下错误消息:

???“org.apache.derby.impl.jdbc.EmbeddeResultSet40”类型的输入参数的未定义函数或方法“numRecords”


没有其他名为numRecords的函数。

您应该能够像对待任何其他变量/对象一样对待MATLAB中的Java对象。您可以创建如下所示的Java对象:

myDate = java.util.Date;
然后将该对象传递给函数:

methods (Static)

    function [numRecords] = numRecords(resultSet)
        numRecords = 0;
        if (~isempty(resultSet))
            row = resultSet.getRow();
            resultSet.beforeFirst();
            resultSet.last();
            numRecords = resultSet.getRow();
            resultSet.absolute(row);
        end
    end

end
myFcn(myDate,...other input arguments...);
有关更多信息,您可以查看

编辑:


不用说,但是您应该避免为函数myFcn指定与您正在传递的Java对象的任何方法相同的名称(即重载)。关于重载函数的实际调用,事情可能会变得混乱,如和所示。

当我写最初的问题时,我意识到了我的错误

显然,在Matlab类中,调用静态函数需要在函数前面加上封闭类…即使是从同一类中调用

我换了一行:

trials = zeros(numRecords(rs));

它成功了。(虽然没有,但它至少调用了函数。)


这是一条令人困惑的错误消息,因为Matlab不应该被键入,但它听起来像是…

谢谢。。现在我发布了一条推特,将提问者的背指向这个问题@吉姆,当你把你的问题告诉达斯时,这种情况经常发生。