我是 Java 新手,有一个问题: 有没有一种干净的方法可以将下面的代码包装在一个函数中,该函数可以获取任何表达式(由箭头指向)作为参数?
Foo A, B;
...
try {
wait.until(new Function<WebDriver, Boolean>() {
public Boolean apply(WebDriver driver) {
return A.equals(B); // <=================== some expression
}
}
catch (Exception ex) {
return false;
}
return true;
最佳答案
您需要一个接口(interface)或一个抽象类来执行此操作。在这种情况下,接口(interface)(两者中的一个)是更好的选择。
如果一个类实现了一个接口(interface),那么它必须具有接口(interface)中列出的函数。因此,当您在函数中接受接口(interface)时,您就知道该对象已列出该函数(并且您可以调用它)。
您将像这样定义一个接口(interface):
public interface Test {
public boolean passedTest();
}
然后您将定义实现测试的类:
public EqualsTest implements Test {
private Foo A, B;
public EqualsTest(Foo A, Foo B){
this.A = A;
this.B = B;
}
@Overrides
public boolean passedTest(){
return A.equals(B);
}
}
那么你的函数将如下所示:
public waitUntil(Test test){
try{
wait.until(new Function<WebDriver, Boolean>() {
public Boolean apply(WebDriver driver) {
return test.passedTest()
}
}
} catch( Exception ex){
return false;
}
return true;
}
关于java - 在Java中包装Selenium wait.until函数,函数作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25386295/