在“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();
}
}
这本书错误地说匿名内部类是本地内部类,因为它不必是本地的(在方法中)或者是我提供的不是匿名内部类的例子(因为它是分配给命名变量)?
由于
答案 0 :(得分:0)
ex
不是本地课程。本地班级不能匿名的任何内容,反之亦然(据我所知)
引自Oracle's Java OO tutorial on Anonymous Classes:
匿名类使您可以使代码更简洁。它们使您能够同时声明和实例化一个类。 它们就像本地类一样,只是它们没有名称。如果只需要使用本地类一次,请使用它们。
以下几行...
虽然本地类是类声明,但匿名类是表达式,这意味着您在另一个表达式中定义该类