저는 (자바에서) API를 설계 중이며 사용자가 Matlab에서 API에 액세스 할 것을 기대합니다. (어떤 메커니즘을 통해 예를 들어, 폴링)를 Java Obj
의 인스턴스의 보류를 얻을 수 (배경)Matlab/Java API 콜백
javaApi.waitUntilPredicateIsTrue(Predicate<JavaObj> test);
내 API : 문제는 내가 API가 같은 기능의 일부를 제공 할 것입니다. 이 API 메소드가 Predicate
에 전달 될 때까지 이러한 인스턴스 중 하나가 true
으로 평가 될 때까지 차단해야합니다. Java에서이 API를 호출하는 경우 다음을 수행합니다.
javaApi.waitUntilPredicateIsTrue(new Predicate<JavaObj>() {
public boolean evaluate(JavaObj jo) {
return "READY".equals(jo.getState());
}
});
아이디어를 얻을 수 있습니다.
어떻게 이것을 Matlab에서 호출 할 수 있습니까? Matlab의 익명 내부 클래스를 사용할 수 있습니까? 인터페이스 Predicate
을 확장하는 Matlab classdef
을 선언 할 수 있습니까 (Java 일반 버전을 처리 할 수 있습니까?).
불행히도 아닙니다; 가장 일반적인 사용 사례 및 Matlab에서 내 API를 사용하기 쉽게 만들기 위해 노력하고 있습니다. 기본적으로 API는 (Java) 객체에 액세스하는 데 사용됩니다. 그러나 객체가 사용자의 관점에서 "준비"되어 있지 않을 수 있습니다. 폴링 로직을 직접 구현하는 대신 간단한 waitUntilXIsReady 메커니즘을 제공하기를 원했습니다. 제안한 문제는 API에 "isMyConditionMet"이 없다는 것입니다. 그가 만족하는지 여부를 결정해야하는 것은 Matlab 최종 사용자입니다 –
"폴링 로직"은 단순히 "! conditionIsMet"을 회전시키는 것보다 복잡하다고 말해야합니다. 그). 이는 새 버전의 개체를 준비 할 수 있기 때문입니다 (멀티 캐스트 그룹에 게시 된 이벤트를 통해 푸시됩니다). 정말 Matlab 사용자가 원시 멀티 캐스트를 망설이지 않기를 바랍니다! –