概念
匿名内部类(Anonymous Inner Class)是Java中的一种特殊的内部类,它没有名称,通常用于覆盖接口或类的方法,或者扩展类。匿名内部类通常用于一次性使用,当你需要为一个方法传递一个实现了某个接口的实例,或者扩展某个类并重写其方法时,匿名内部类提供了一种简便的方式。
语法
new SuperType(arguments) {
// 类的主体
};
在这里,SuperType
可以是接口,也可以是类。如果是接口,匿名内部类将实现该接口;如果是类,匿名内部类将扩展该类。
特点
- 没有名称:匿名内部类没有名称,因此你无法像普通类那样再次创建它的实例。
- 局部类:匿名内部类通常在方法内部或代码块中定义,它们可以访问外部类的成员变量和方法,即使是声明为
private
的。 - 只能创建一个实例:匿名内部类通常只用于创建一个实例,创建后无法再次使用。
- 用于实现接口或扩展类:匿名内部类通常用于实现一个接口或扩展一个类,并立即使用。
示例
// 接口
interface MyInterface {
void doSomething();
}
// 使用匿名内部类实现接口
MyInterface myInterface = new MyInterface() {
@Override
public void doSomething() {
System.out.println("Doing something...");
}
};
// 调用接口方法
myInterface.doSomething();
在上面的示例中,我们定义了一个名为 MyInterface
的接口,并在匿名内部类中实现了该接口的 doSomething()
方法。然后,我们创建了该匿名内部类的实例,并将其赋值给 MyInterface
类型的变量 myInterface
。最后,我们通过 myInterface
调用了 doSomething()
方法。
匿名内部类在Java的事件处理、GUI编程和集合框架中的迭代器等场景中非常常见。它们提供了一种简洁的方式来定义和创建一次性的类实例。