【问题标题】:What is this actually in Java?在 Java 中这实际上是什么?
【发布时间】:2013-01-05 06:59:02
【问题描述】:

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

我提供的示例是 Selenium WebDriver ExplicitWait,

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

他到底在做什么?他是如何在没有将对象引用分配给 ExpectedCondition 类的情况下编写逻辑的?

谢谢。

【问题讨论】:

    标签: java selenium webdriver


    【解决方案1】:

    这里发生的是创建一个继承自ExpectedConditionanonymous class。在这个类的主体中,他将覆盖方法apply(...)

    【讨论】:

      【解决方案2】:

      这是一个扩展 ExpectedConditionanonymous class

      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
      );
      

      【讨论】:

        【解决方案3】:

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

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

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

        (*) 好吧,它确实有一个名字,比如 Outerclass$12,但你不应该依赖它在每次编译时都是一样的。如果你需要一个类名,这是错误的语法。

        【讨论】:

          猜你喜欢
          • 2017-10-24
          • 2021-05-12
          • 2011-08-01
          • 2011-12-26
          • 1970-01-01
          • 2021-11-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多