2013-01-05 29 views
5

मैं सेलेनियम में काम कर रहा हूं, और यह सवाल सेलेनियम की बजाय जावा के लिए अधिक विशिष्ट है।वास्तव में जावा में यह क्या है?

उदाहरण मैं प्रदान कर रहा हूँ सेलेनियम WebDriver ExplicitWait,

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

क्या वह वास्तव में ऐसा है? क्लास अपेक्षित कैंडिशन में किसी ऑब्जेक्ट को संदर्भ निर्दिष्ट किए बिना तर्क कैसे लिख रहा है ???

धन्यवाद।

उत्तर

8

यहां क्या हो रहा है anonymous class का निर्माण है जो ExpectedCondition से प्राप्त होता है। इस वर्ग के शरीर में वह 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 */ 
     } 
    }; 
    } 
} 

यह कोई नाम (*) कि फैली हुई है या नामित वर्ग या इंटरफ़ेस लागू करता है और नया वर्ग परिभाषा ओवरराइड विधि (रों) भी शामिल है के साथ एक नया वर्ग को परिभाषित किया। परिभाषा केवल एक तत्व के निर्माण के लिए प्रयोग की जाती है।

(*) ठीक है, यह वास्तव में एक नाम है, जैसे ऑउटरक्लास $ 12, लेकिन आप संकलन करने के लिए संकलन से समान नहीं हैं। यदि आपको कक्षा के नाम की आवश्यकता है, तो यह उपयोग करने के लिए गलत वाक्यविन्यास है।

संबंधित मुद्दे