2013-01-05 11 views
5

Sto lavorando in selenio e questa domanda è più specifica di Java piuttosto che del selenio.Cos'è in realtà in Java?

L'esempio sto fornendo è selenio WebDriver ExplicitWait,

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

Quello che sta esattamente facendo? Come sta scrivendo Logic senza assegnare un riferimento ad un oggetto alla classe ExpectedCondition ???

Grazie.

risposta

8

Quello che sta accadendo qui è la creazione di un anonymous class che eredita da ExpectedCondition. Nel corpo di questa classe sta quindi sovrascrivendo il metodo apply(...).

+0

Grazie, è chiaro ora :) – Fazy

2

Questo è un anonymous class che si estende 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

Questa è una classe interiore anonima. la forma generale è:

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

ha definito una nuova classe senza nome (*) che si estende o implementa la classe o interfaccia denominata ed include il metodo sovresposta (s) nella nuova definizione di classe. La definizione viene utilizzata solo per l'elemento che viene creato.

(*) Ok, ha davvero un nome, come Outerclass $ 12, ma non si deve fare affidamento su quello che è lo stesso da compilare a compilare. Se hai bisogno di un nome di classe, questa è la sintassi sbagliata da usare.

Problemi correlati