如何将Java对象作为参数传递给MATLAB函数?
我编写了一个Matlab类,用JDBC和java.sql中的东西实现了一个数据库 我需要知道一个ResultSet中有多少个结果,因此我编写了以下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();
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不应该被键入,但它听起来像是…谢谢。。现在我发布了一条推特,将提问者的背指向这个问题@吉姆,当你把你的问题告诉达斯时,这种情况经常发生。