我编写了一个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
但是当我尝试调用它时,我收到以下错误消息:
???未定义的函数或方法'numRecords'用于'org.apache.derby.impl.jdbc.EmbedResultSet40'类型的输入参数
没有其他名为numRecords的功能。
答案 0 :(得分:2)
当我写原始问题时,我意识到了我的错误。
显然,在Matlab类中,调用静态函数需要将封闭类预先添加到函数中......即使从同一个类中调用它也是如此!
我换了一行:
trials = zeros(numRecords(rs));
与
trials = zeros(CMAPSigSimResultsDB.numRecords(rs));
它有效。 (好吧它没有,但它至少称之为功能。)
这是一个令人困惑的错误消息,因为Matlab不应该被输入,但它听起来像是......
答案 1 :(得分:1)
您应该能够像在任何其他变量/对象中一样处理MATLAB中的Java对象。您可以像这样创建一个Java对象:
myDate = java.util.Date;
然后将该对象传递给函数:
myFcn(myDate,...other input arguments...);
有关详情,请查看MATLAB documentation。
修改强>
可能不言而喻,但是你应该避免让函数 myFcn 与你传入的Java对象的任何方法相同(即重载 )。关于哪些重载函数实际被调用,事情会变得混乱,如this other question和my answer所示。