2013-01-05 10 views
5

私はSeleniumで作業しています。この質問は、SeleniumではなくJavaに特有のものです。これはJavaで実際には何ですか?

私が提供しています例が、彼は正確に何をしているのです

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

、セレンwebdriverをExplicitWaitのですか?彼がどのようにオブジェクトへの参照をクラスに割り当てずにLogicを書くかExpectedCondition ???

ありがとうございました。

答えて

8

ここでは、ExpectedConditionを継承するanonymous classが作成されています。このクラスのボディでは、メソッドapply(...)をオーバーライドしています。

+0

ありがとうございました。 – Fazy

2

は、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 */ 
     } 
    }; 
    } 
} 

それが拡張または実装するという名前のクラスまたはインタフェースをし、新しいクラス定義でオーバーライドメソッド(複数可)を含む無名(*)を持つ新しいクラスを定義しました。この定義は、作成されている1つの要素に対してのみ使用されます。

(*)確かに、Outerclass $ 12のような名前がありますが、コンパイルからコンパイルまで同じであるということには依存していません。クラス名が必要な場合は、使用する構文が間違っています。

関連する問題