将函数应用于Java中的while循环

将函数应用于Java中的while循环,java,function,lambda,predicate,Java,Function,Lambda,Predicate,我有while循环,它应该在condition1为true或condition2为true时运行1或2大小写取决于某些初始布尔条件 现在我将其实现为一个三元运算符,但我想了解如何使用谓词和lambda表达式来实现。 有人能举个例子吗?如何声明函数变量并将其放入while循环条件 boolean initialCondition = stopBtn.getText().length() > 0; while(initialCondition ? stopBtn.waitToBeHidden

我有
while
循环,它应该在
condition1
为true或
condition2
为true时运行
1
2
大小写取决于某些初始布尔条件

现在我将其实现为一个三元运算符,但我想了解如何使用谓词和lambda表达式来实现。 有人能举个例子吗?如何声明函数变量并将其放入
while
循环条件

boolean initialCondition = stopBtn.getText().length() > 0;

while(initialCondition ? stopBtn.waitToBeHidden() : stopBtn.isDisplayed()) {
    if (a++ < 5) {
        stopBtn.click();
    }
}
return this;
boolean initialCondition=stopBtn.getText().length()>0;
while(initialCondition?stopBtn.waitToBeHidden():stopBtn.isDisplayed()){
if(a++<5){
stopBtn.click();
}
}
归还这个;

您可以使用
布尔供应商
对条件进行建模:

java.util.function.BooleanSupplier condition = stopBtn.getText().length() > 0 ?
     stopBtn::waitToBeHidden : 
     stopBtn::isDisplayed;

while (condition.getAsBoolean()) {
    ...
}

我认为即使在谓词中,也需要if/else

如果您提供更多的代码,可能会更容易看到您的目标是做什么。使用谓词的一种方法(然后可以传递)是:

Predicate<StopBtnClass> pred = btn -> btn.getText().length() > 0 ? btn.waitToBeHidden() : btn.isDisplayed();

while(pred.test(stopBtn)) {
    ...
谓词pred=btn->btn.getText().length()>0?btn.waitToBeHidden():btn.isDisplayed();
while(预测试(stopBtn)){
...

您能展示一些您想要实现的伪代码吗?我不太知道您想在哪里应用谓词…是的,我理解谓词中的if/else。我只是在“while”条件下尝试应用谓词时感到困惑。我忘记了.test(…)方法。但是您的示例对我来说比您更有用!