首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何避免从Matlab调用Java时的歧义?

如何避免从Matlab调用Java时的歧义?
EN

Stack Overflow用户
提问于 2009-03-17 21:06:07
回答 2查看 754关注 0票数 2

我刚刚发现当从Matlab调用Java时

代码语言:javascript
复制
object.method(arg1,...,argn)

等于

代码语言:javascript
复制
method(object, arg1,...,argn)

这里的问题是,我还有一个method.m,它可以完成一些从Java到Matlab的转换(例如。将String[]转换为字符串单元格)。我的method.m看起来就像

代码语言:javascript
复制
function result = method(object, arg1,...argn)
  intermediate = object.method(arg1,...argn);
  result = translate(intermediate);

当我调用method(object, arg1,...,argn)时,它执行直接的method.m调用,而不是使用我的method.m

修复很简单,只是我的Java方法和.m文件都不要使用相同的方法名。,但还有别的办法吗?我如何知道哪个方法会被调用,并给出相同的名称?是否有一种方法可以确保我调用method.m 而不是方法?很容易确保调用Java方法,只需使用object.method语法即可。

顺便提一句,同样愚蠢的是,.m编辑器链接到method.m调用的method(object, arg1,...,argn),而当它调试时,它调用了method(object, arg1,...,argn)方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-03-17 22:41:50

你可能会遇到一些MATLAB如何调度的问题.

我如何知道哪个方法会被调用相同的名称?

MATLAB文档的这一节讨论了在有多个名称相同的函数的情况下如何选择函数。从文档中看:“函数优先顺序根据函数的类型及其在MATLAB路径上的位置来确定一个函数的优先级。”这一订单(从最高到最低)如下:

  • 子函数
  • 私有功能
  • 类构造函数
  • 过载法
  • 函数在当前目录中
  • 函数在路径的其他位置。

在使用" method (object,.)“时,您的"method.m”函数的位置很可能会决定它是被调用还是Java方法被调用语法。

有没有办法确保我调用了.m而不是方法?

现在,我猜您的"method.m“位于当前目录或路径的其他位置(两个最低优先级位置)。如果您在更大的代码中创建了一个调用它的“子函数 .m”,或者可以将它放在一个专用目录中,每个需要调用它的函数都可以调用它,那么当您使用“方法(object,.)”时,可能会调用它而不是Java方法。语法。

希望这能有所帮助!

票数 3
EN

Stack Overflow用户

发布于 2009-03-18 00:10:16

嗯.您可以尝试使用@method获取函数句柄,然后调用函数句柄上的feval()

这可能有用,但我不确定.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/656014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档