APIResponse res = kpiAPIObject.getALLKPIDefinition(); ->功能
布尔值状态= res.getNodeValues(“ shortName”)。contains(kpiName); ->函数b
public void dynamicWait(function a,function b)
{
long t = System.currentTimeMillis();
while (t > System.currentTimeMillis() - 180000 ) {
res = /* execute function a here */
if(/* execute function b here */) {
break;
} else {
Thread.sleep(30000);
continue;
}
}
}
预先感谢
答案 0 :(得分:3)
听起来像您可以使用一些lambda:
Supplier<APIResponse> a = kpiAPIObject::getALLKPIDefinition;
Predicate<APIResponse> b = res -> res.getNodeValues("shortName").contains(kpiName);
然后像这样称呼他们
APIResponse res = a.get();
if (b.test(res)) {
break;
}
答案 1 :(得分:3)
在Java中,有多种方法。如果您查看java.util.function
软件包,您将看到
您可以将它们用作方法的输入并在其中执行。
在这种情况下,您将对功能a使用供应商,对功能b使用谓词。
Supplier<APIResponse> a = () -> { return kpiAPIObject.getALLKPIDefinition(); };
Predicate<APIResponse> b = res -> res.getNodeValues("shortName").contains(kpiName);
public void dynamicWait(Supplier<APIResponse> a,Predicate<APIResponse> b)
{
long t = System.currentTimeMillis();
while (t > System.currentTimeMillis() - 180000 ){
res = a.get();
if(b.test(res)){
break;
}
else{
Thread.sleep(30000);
continue;
}
}
}