Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 从Matlab调用Java时如何避免歧义?

我刚刚发现从Matlab调用Java时

object.method(arg1,...,argn) 相当于

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

function result = method(object, arg1,...argn) intermediate = object.method(arg1,...argn); result = translate(intermediate); 发生的是当我调用method(object, arg1,...,argn) ,它直接进行Java调用,而不是使用我的method.m

修复很容易,只是不要对Java方法和.m文件使用相同的方法名称。 但是还有另一种方法吗?我怎么知道给定相同名称的方法?有没有办法确保我调用method.m而不是Java方法?只需使用object.method语法即可轻松确保对Java方法的调用。

作为一个侧面说明,什么也傻是.m编辑器链接到method.m的method(object, arg1,...,argn)呼叫,而当它调试它调用的Java方法。


回答:
您可能会在MATLAB如何进行分派方面遇到一些问题...

我怎么知道给定相同名称的方法?

MATLAB文档的这一部分讨论了在存在多个具有相同名称的函数的情况下如何选择函数。在文档中:“函数优先级顺序根据函数的类型及其在MATLAB路径上的位置确定一个函数相对于另一个函数的优先级。”该顺序(从最高到最低)如下:
  • 子功能
  • 私人功能
  • 类构造器
  • 重载方法
  • 当前目录中的功能
  • 在路径上的其他地方起作用
使用“ method(object,...)”语法时,“ method.m”函数的位置将很可能确定它是被调用还是Java方法被调用。

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

现在,我猜您的“ method.m”在当前目录中或路径的其他位置(要插入的两个最低优先级位置)。如果您在较大的代码中将“ method.m”作为子函数进行调用,或者可以将其放置在私有目录中 ,则每个需要调用该函数的函数都可以将其调用,那么它可能会被代替使用“ method(object,...)”语法时的Java方法。

希望这可以帮助!



更多&回答...
poster 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 03:25


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.