繁体   English   中英

如何将 Java object 作为参数传递给 MATLAB ZC1C425268E683845D1AB5074C11

[英]How do I pass a Java object as a parameter to a MATLAB function?

I wrote a Matlab class to implement a database using JDBC and stuff from java.sql.

我需要知道 ResultSet 中有多少结果,所以我写了以下 Matlab static function:

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

但是当我尝试调用它时,我收到以下错误消息:

??? Undefined function or method 'numRecords' for input arguments of type 'org.apache.derby.impl.jdbc.EmbedResultSet40'

没有其他称为 numRecords 的函数。

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

Apparently, in a Matlab class, calling a static function requires the enclosing class to be prepended to the function...even when called from within the same class!

我换了行:

trials = zeros(numRecords(rs));

trials = zeros(CMAPSigSimResultsDB.numRecords(rs));

它奏效了。 (好吧,它没有,但它至少调用了 function。)

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

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

myDate = java.util.Date;

然后将 object 传递给 function:

myFcn(myDate,...other input arguments...);

有关更多信息,您可以查看MATLAB 文档

编辑:

It may go without saying, but you should avoid giving the function myFcn the same name as any of the methods for the Java object you are passing in (ie overloading ). 关于实际调用哪个重载 function 的事情可能会让人感到困惑,正如另一个问题我对它的回答所说明的那样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM