简体   繁体   中英

Anonymous inner class at member level

In the book 'Java OCP 8 Programmer II Study Guide', it is said that

an anonymous inner class is a local inner class

and

a local inner class is a nested class defined within a method

However, I am able to define an anonymous inner class outside a method:

public class Outer {
  Foo ex = new Foo {
      @Override
      public void bar() {
        System.out.println("This is my bar implementation");
      }
  }
}

void TestClass {
  public static void main(String[] args) {
    Outer outer = new Outer();
    outer.ex.bar();
  }
}

Is the book wrong in saying that an anonymous inner class is a local inner class as it doesn't have to be local (within a method) or is the example I provided not an anonymous inner class (as it is assigned to a named variable)?

Thanks

ex is not a local class. anything that a local class cannot be anonymous and vice-versa (to the best of my knowledge)

Quoting from Oracle's Java OO tutorial on Anonymous Classes :

Anonymous classes enable you to make your code more concise. They enable you to declare and instantiate a class at the same time. They are like local classes except that they do not have a name. Use them if you need to use a local class only once.

Couple of lines below ..

While local classes are class declarations, anonymous classes are expressions , which means that you define the class in another expression

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM