Java实际上是什么?

时间:2013-01-05 06:59:02

标签: java selenium webdriver

我在Selenium工作,这个问题更具体针对Java而不是Selenium。

我提供的示例是Selenium WebDriver ExplicitWait,

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

他到底在做什么?如何编写逻辑而不将对象的引用分配给类ExpectedCondition ???

感谢。

3 个答案:

答案 0 :(得分:9)

这里发生的事情是创建一个继承自ExpectedCondition的{​​{3}}。在本课程的正文中,他将覆盖方法apply(...)

答案 1 :(得分:3)

这是一个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
);

答案 2 :(得分:1)

这是一个匿名的内部类。一般形式是:

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

它定义了一个没有名称(*)的新类,它扩展或实现了命名的类或接口,并在新的类定义中包含了overriden方法。该定义仅用于创建的一个元素。

(*)好吧,它确实有一个名字,比如Outerclass $ 12,但你不应该依赖于从编译到编译的相同。如果您需要类名,则使用错误的语法。