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

时间:2016-02-15 16:41:42

标签: java function lambda predicate

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

现在我将其实现为三元运算符,但我想了解如何使用Predicate和lambda表达式完成此操作。 有人可以提供一个例子吗?如何声明Function变量并将其置于while循环条件中?

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

while(initialCondition ? stopBtn.waitToBeHidden() : stopBtn.isDisplayed()) {
    if (a++ < 5) {
        stopBtn.click();
    }
}
return this;

2 个答案:

答案 0 :(得分:4)

我认为即使在谓语中你也需要你的if / else。

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

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

while(pred.test(stopBtn)) {
    ...

答案 1 :(得分:3)

您可以使用BooleanSupplier对条件进行建模:

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

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