6

私はSeleniumで作業していますが、この質問はSeleniumではなくJavaに固有のものです。

私が提供している例は、SeleniumWebDriverExplicitWaitです。

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

彼は正確に何をしているのですか?オブジェクトへの参照をクラスExpectedConditionに割り当てずにロジックを作成する方法???

ありがとう。

4

3 に答える 3

9

ここで起こっているのは、から継承する匿名クラスExpectedConditionの作成です。このクラスの本体では、彼はメソッドをオーバーライドしていますapply(...)

于 2013-01-05T07:01:30.523 に答える
3

これは、を拡張する匿名クラス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
);
于 2013-01-05T07:04:22.847 に答える
1

これは匿名の内部クラスです。一般的な形式は次のとおりです。

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

名前付きクラスまたはインターフェイスを拡張または実装し、オーバーライドされたメソッドを新しいクラス定義に含める、name(*)のない新しいクラスを定義しました。定義は、作成される1つの要素に対してのみ使用されます。

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

于 2013-01-05T07:05:49.207 に答える