2013-01-05 15 views
5

Pracuję w Selenium, a to pytanie jest bardziej specyficzne dla Javy niż Selenium.Co to właściwie jest w Javie?

Przykład przytaczam jest Selen WebDriver ExplicitWait,

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

co on dokładnie robisz? Jak pisze Logic bez przypisywania odniesienia do obiektu do klasy ExpectedCondition ???

Dzięki.

Odpowiedz

8

To, co się tutaj dzieje, to utworzenie anonymous class, która dziedziczy po ExpectedCondition. W ciele tej klasy jest on nadrzędny wobec metody apply(...).

+0

Dzięki, jest teraz czysto :) – Fazy

2

To jest anonymous class, który rozciąga się na 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

To jest anonimowa klasa wewnętrzna. ogólna postać jest:

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

definiowana nową klasę bez nazwy (*), która rozciąga się i realizuje nazwie klasy lub interfejs i obejmuje metody (i) nadpisane w nowym zdefiniowania klasy. Definicja jest używana tylko dla jednego tworzonego elementu.

(*) Okay, to naprawdę ma nazwę, na przykład Outerclass 12 USD, ale nie powinieneś polegać na tym, że to samo z kompilacji do kompilacji. Jeśli potrzebujesz nazwy klasy, jest to niewłaściwa składnia do użycia.