2013-01-05 84 views
5

我在Selenium工作,这个问题更具体到Java而不是Selenium。Java中实际是什么?

我提供的例子是硒的webdriver ExplicitWait,

new ExpectedCondition<WebElement>(){ 
     @Override 
     public WebElement apply(WebDriver d) 
     { 
      return d.findElement(By.id("myDynamicElement")); 
     }}); 

什么,他正好在做什么?他如何编写逻辑,而不指定对类的引用ExpectedCondition?

谢谢。

回答

8

这里发生的是创建从ExpectedCondition继承的anonymous class。在这门课程中,他将重写方法apply(...)

+0

谢谢,现在清楚:) – Fazy

2

这是一个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 
); 
1

这是一个匿名的内部类。的一般形式是:

class OuterClass { 
    void method() { 
    MyInterfaceOrClass innerClass = new MyInterfaceOrClass() { 
     @Override 
     public void methodToOverride() { 
      /* code */ 
     } 
    }; 
    } 
} 

它定义了一类新没有名字(*)延伸或实现指定的类或接口,并且包括在新的类定义的覆盖方法(一个或多个)。该定义仅用于正在创建的一个元素。

(*)好吧,它真的有一个名字,像Outerclass $ 12,但是你不应该依赖从编译到编译的相同。如果您需要类名称,则这是使用的错误语法。