成员级

时间:2016-10-08 22:15:16

标签: java

在“Java OCP 8 Programmer II Study Guide'”一书中,据说

  

匿名内部类是本地内部类

  

本地内部类是在方法

中定义的嵌套类

但是,我能够在方法之外定义一个匿名内部类:

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

这本书错误地说匿名内部类是本地内部类,因为它不必是本地的(在方法中)或者是我提供的不是匿名内部类的例子(因为它是分配给命名变量)?

由于

1 个答案:

答案 0 :(得分:0)

ex不是本地课程。本地班级不能匿名的任何内容,反之亦然(据我所知)

引自Oracle's Java OO tutorial on Anonymous Classes

  

匿名类使您可以使代码更简洁。它们使您能够同时声明和实例化一个类。 它们就像本地类一样,只是它们没有名称。如果只需要使用本地类一次,请使用它们。

以下几行...

  

虽然本地类是类声明,但匿名类是表达式,这意味着您在另一个表达式中定义该类