java - 从 Matlab 调用 Java 时如何避免歧义?

标签 java matlab methods ambiguity

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

object.method(arg1,...,argn)

相当于

method(object, arg1,...,argn)

这里的问题是我也有一个method.m它做了一些从 Java 到 Matlab 的转换(例如,将 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方法?很容易确保调用Java方法,只需使用 object.method语法。

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

最佳答案

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

我如何知道同名的方法将被调用?

This section MATLAB 文档讨论了在存在多个同名函数的情况下如何选择函数。文档中:“函数优先顺序根据函数类型及其在 MATLAB 路径上的位置确定一个函数相对于另一个函数的优先级。”此顺序(从最高到最低)如下:

  • 子功能
  • 私有(private)函数
  • 类构造函数
  • 重载方法
  • 当前目录下的函数
  • 在路径上的其他地方发挥作用

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

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

现在,我猜测您的“method.m”位于当前目录或路径上的其他位置(两个最低优先级位置)。如果您将“method.m”设为 subfunction在调用它的较大代码中,或者是否可以将其放入 private directory 中如果它可以被每个需要调用它的函数调用,那么当您使用“方法(对象,...)”语法时,它可能会被调用而不是 Java 方法。

希望这有帮助!

关于java - 从 Matlab 调用 Java 时如何避免歧义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/656014/

相关文章:

java - Ehcache 如何在元素过期时删除键?

matlab - 用于照片的光学字符识别程序

c++ - Eigen Library - EigenSolver 中的复数值

matlab - 使用 MATLAB 进行简单的二元逻辑回归

ajax - 使用Ajax更改国家/地区时更新购物车运输woocommerce

java - 使用 XML 配置生成 HTML 文件

java - 在 Spring Boot IntegrationTest 上禁用 @Schedule

java - Java 中的购物车

c++ - 修复重载运算符 '+' 的使用不明确?

javascript - 从所有匹配的表单元素中删除一个类..最干净的方法?