-6

黑白内部类和匿名内部类有什么区别?您能否提供一些使用这些内部类的场景?

4

1 回答 1

1

本地内部类由在方法中声明的类组成,而匿名类是在创建实例时声明的。因此匿名类是在运行中或在程序执行期间创建的。匿名类没有为该类声明名称,这与具有类名的本地内部类不同。

例子:

interface NamedInterface {
    public InnerClass() {}
    private foo() {}
    public baz() {}
    public bar() {}
}
 
class Main {
    public Main() {
       compareClasses();
    }

    public void compareClasses() {
         // local inner class declaration
         class InnerClass {
             public InnerClass() {}
             private foo() {}
             public baz() {}
             public bar() {}
         }
         InnerClass iCInstance = new InnerClass();

         // anonymous class declared and instantiated during execution
         NamedInterface anonymousClassInstance = new NamedInterface() {
             public InnerClass() {}
             private foo() {}
             public baz() {}
             public bar() {}
         }
    }
}
于 2013-09-10T12:09:38.177 回答