![]() |
从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文件使用相同的方法名称。 [B]但是还有另一种方法吗?我怎么知道给定相同名称的方法?有没有办法确保我调用method.m而不是Java方法?[/B]只需使用object.method语法即可轻松确保对Java方法的调用。 作为一个侧面说明,什么也傻是.m编辑器链接到method.m的method(object, arg1,...,argn)呼叫,而当它调试它调用的Java方法。 回答: 您可能会在MATLAB如何进行分派方面遇到一些问题... [B]我怎么知道给定相同名称的方法?[/B] MATLAB文档的[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/f7-58170.html#bresuvu-3"]这一部分[/URL]讨论了在存在多个具有相同名称的函数的情况下如何选择函数。在文档中:“函数优先级顺序根据函数的类型及其在MATLAB路径上的位置确定一个函数相对于另一个函数的优先级。”该顺序(从最高到最低)如下: [LIST][*]子功能[*]私人功能[*]类构造器[*]重载方法[*]当前目录中的功能[*]在路径上的其他地方起作用[/LIST]使用“ method(object,...)”语法时,“ method.m”函数的位置将很可能确定它是被调用还是Java方法被调用。 [B]有没有办法确保我调用method.m而不是Java方法?[/B] 现在,我猜您的“ method.m”在当前目录中或路径的其他位置(要插入的两个最低优先级位置)。如果您在较大的代码中将“ method.m”作为[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/f4-70666.html"]子函数[/URL]进行调用,或者可以将其放置在[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/f4-70335.html"]私有目录中[/URL] ,则每个需要调用该函数的函数都可以将其调用,那么它可能会被[I]代替[/I]使用“ method(object,...)”语法时的Java方法。 希望这可以帮助! [url=https://stackoverflow.com/questions/656014]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 23:42。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.