Java 理解下面的代码

Java 理解下面的代码,java,selenium,Java,Selenium,我无法理解这段代码,他们是在方法中定义构造函数吗?我知道返回了一个WebElement对象,但在java中这是什么样的编码概念呢 WebElement foo = wait.until(new Function() { public WebElement apply(WebDriver driver) { return driver.findElement( By.id("foo") ); } }); 它不是在创建构造函数。相反,它创建的类型与函数

我无法理解这段代码,他们是在方法中定义构造函数吗?我知道返回了一个WebElement对象,但在java中这是什么样的编码概念呢

WebElement foo = wait.until(new Function() {

     public WebElement apply(WebDriver driver) {

         return driver.findElement( By.id("foo") );

     }

});

它不是在创建构造函数。相反,它创建的类型与
函数
兼容。它为什么这样做<代码>函数是一个接口或抽象类(我真的不知道,请编辑我的答案),这意味着它没有构造函数/它的构造函数无法调用。那你怎么写呢

new Function ()
?

这就是花括号里的东西的用武之地
Function
有一个名为
apply
的方法,它没有实现(抽象)。这也是为什么不能构造抽象类和接口的原因。现在在大括号中,您在扩展
函数
/实现
函数
(取决于
函数
是接口还是抽象类)的匿名类中实现了
应用
方法。但是Java为您做了所有这些,所以您不必担心。上面评论中的链接非常好。您可以在那里了解更多信息。

首先

WebDriverWait wait = new WebDriverWait();
WebDriverWait.util,它从FluentWait扩展而来,定义如下

public <V> V until(Function<? super T, V> isTrue) 

public V until(函数)它的调用使匿名类看一看
ExpectedCondition ec = new ExpectedCondition<WebElement>() {
   public WebElement apply(WebDriver d) {
            return d.findElement(By.id("cutome"));
    }
  };