我正在设计一个 API(用 Java 语言),并希望用户从 Matlab 访问该 API。问题是我希望 API 提供如下功能:
javaApi.waitUntilPredicateIsTrue(Predicate<JavaObj> test);
我的 API(在后台)获取 Java Obj 的实例(通过某种机制,例如轮询)。我希望此 API 方法一直阻塞,直到这些实例之一在传递给 Predicate
时计算结果为 true
。如果我从 Java 调用这个 API,我会这样做:
javaApi.waitUntilPredicateIsTrue(new Predicate<JavaObj>() {
public boolean evaluate(JavaObj jo) {
return "READY".equals(jo.getState());
}
});
你明白了。
如何从 Matlab 内部调用它? 我可以使用 Matlab 中的匿名内部类吗?我可以声明一个 Matlab classdef
来扩展接口(interface) Predicate
(这可以处理 Java 通用版本)吗?
最佳答案
这听起来像是一个棘手的问题。我仍在运行 R2006b,因此这可能已发生变化,但 MATLAB 似乎不会将函数句柄(包括匿名函数)和结构转换为 Java 对象。我不知道 MATLAB 自定义类,因为语法已更改。字符串、数组和元胞数组 will translate properly 。他们根本不评论实现接口(interface)。 (:p:p:p嘘声)
编辑:刚刚在 Matlab Central 上找到此页面,它讨论了一些未记录的接口(interface)。
关于java - Matlab/Java API 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/780981/