Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我刚刚发现从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.m而不是Java方法? 现在,我猜您的“ method.m”在当前目录中或路径的其他位置(要插入的两个最低优先级位置)。如果您在较大的代码中将“ method.m”作为子函数进行调用,或者可以将其放置在私有目录中 ,则每个需要调用该函数的函数都可以将其调用,那么它可能会被代替使用“ method(object,...)”语法时的Java方法。 希望这可以帮助! 更多&回答... |
![]() |
![]() |