我正在设计一个API(使用Java),并希望用户可以从Matlab访问API。问题是,我想要的API提供像一块的功能:Matlab/Java 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
它扩展了接口Predicate
(这可以处理Java通用版本)吗?
不幸的是,我试图让我的API更容易用于最常见的用例以及Matlab。基本上,API用于访问(Java)对象。但是,从用户的角度来看,该对象可能不是“准备好”的。我不希望自己实现轮询逻辑,而是希望提供一个简单的waitUntilXIsReady机制。您的建议存在的问题是API上没有“isMyConditionMet”。这是Matlab最终用户需要决定他是否对此感到满意 – 2009-04-23 15:37:43