我正在設計一個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