我在Selenium工作,这个问题更具体针对Java而不是Selenium。
我提供的示例是Selenium WebDriver ExplicitWait,
new ExpectedCondition<WebElement>(){
@Override
public WebElement apply(WebDriver d)
{
return d.findElement(By.id("myDynamicElement"));
}});
他到底在做什么?如何编写逻辑而不将对象的引用分配给类ExpectedCondition ???
感谢。
答案 0 :(得分:9)
这里发生的事情是创建一个继承自ExpectedCondition
的{{3}}。在本课程的正文中,他将覆盖方法apply(...)
。
答案 1 :(得分:3)
这是一个anonymous class,它扩展了ExpectedCondition
。
Collections.sort (aList,
new Comparator () { // implements the IF
public int compare (ObjectType o1, ObjectType o2 ) throws ..{
.... implementation for compare()
} // end of compare()
} // end of Comparator implementation
);
答案 2 :(得分:1)
这是一个匿名的内部类。一般形式是:
class OuterClass {
void method() {
MyInterfaceOrClass innerClass = new MyInterfaceOrClass() {
@Override
public void methodToOverride() {
/* code */
}
};
}
}
它定义了一个没有名称(*)的新类,它扩展或实现了命名的类或接口,并在新的类定义中包含了overriden方法。该定义仅用于创建的一个元素。
(*)好吧,它确实有一个名字,比如Outerclass $ 12,但你不应该依赖于从编译到编译的相同。如果您需要类名,则使用错误的语法。