title: What calls the greet() method in HelloWorldAnonymousClasses?
body: <p>In the HelloWorldAnonymousClasses example program (<a href="https://docs.oracle.com/javase/tutorial/displayCode.html?code=https://docs.oracle.com/javase/tutorial/java/javaOO/examples/HelloWorldAnonymousClasses.java" rel="nofollow">from here</a>):</p>
  
  <pre><code>/*
   * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   *   - Redistributions of source code must retain the above copyright
   *     notice, this list of conditions and the following disclaimer.
   *
   *   - Redistributions in binary form must reproduce the above copyright
   *     notice, this list of conditions and the following disclaimer in the
   *     documentation and/or other materials provided with the distribution.
   *
   *   - Neither the name of Oracle or the names of its
   *     contributors may be used to endorse or promote products derived
   *     from this software without specific prior written permission.
   *
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
   * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
   * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  
  public class HelloWorldAnonymousClasses {
  
      interface HelloWorld {
          public void greet();
          public void greetSomeone(String someone);
      }
  
      public void sayHello() {
  
          class EnglishGreeting implements HelloWorld {
              String name = "world";
              public void greet() {
                  greetSomeone("world");
              }
              public void greetSomeone(String someone) {
                  name = someone;
                  System.out.println("Hello " + name);
              }
          }
  
          HelloWorld englishGreeting = new EnglishGreeting();
  
          HelloWorld frenchGreeting = new HelloWorld() {
              String name = "tout le monde";
              public void greet() {
                  greetSomeone("tout le monde");
              }
              public void greetSomeone(String someone) {
                  name = someone;
                  System.out.println("Salut " + name);
              }
          };
  
          HelloWorld spanishGreeting = new HelloWorld() {
              String name = "mundo";
              public void greet() {
                  greetSomeone("mundo");
              }
              public void greetSomeone(String someone) {
                  name = someone;
                  System.out.println("Hola, " + name);
              }
          };
          englishGreeting.greet();
          frenchGreeting.greetSomeone("Fred");
          spanishGreeting.greet();
      }
  
      public static void main(String... args) {
          HelloWorldAnonymousClasses myApp =
              new HelloWorldAnonymousClasses();
          myApp.sayHello();
      }            
  }
  </code></pre>
  
  <p>What calls the <code>greet()</code> method of the <code>englishGreeting</code> object? I'm confused..</p>
  
  <p>EDIT</p>
  
  <p>Thanks for your replies. I should have spotted that! I was trying to solve another query, which is:</p>
  
  <p>In the example program on
  <a href="https://gist.github.com/bernii/5697073" rel="nofollow">https://gist.github.com/bernii/5697073</a></p>
  
  <p>In the code</p>
  
  <pre><code>this.wait.until(new ExpectedCondition&lt;Boolean&gt;() {
              public Boolean apply(WebDriver webDriver) {
                  System.out.println("Searching ...");
                  return webDriver.findElement(By.id("resultStats")) != null;
              }
  });
  </code></pre>
  
  <p>what calls the apply() method in the anonymous inner class?</p>
  
  <p>EDIT</p>
  
  <p>I have now asked my second query in a new Question.</p>