在Java中,匿名内部类(Anonymous Inner Class)是一种没有显式地定义类名的内部类。它允许你在不创建单独类的情况下,创建一个新的类实例,并且这个类通常只使用一次。匿名内部类在编写简洁、临时的类实现时非常有用,尤其是在需要实现接口或扩展现有类时。
匿名内部类的基本用法如下:
- 实现接口:
interface MyInterface { void doSomething(); } public class Main { public static void main(String[] args) { // 使用匿名内部类实现MyInterface接口 MyInterface myInterface = new MyInterface() { @Override public void doSomething() { System.out.println("Doing something..."); } }; myInterface.doSomething(); } }
- 扩展现有类:
class MyClass { void printMessage() { System.out.println("Hello from MyClass!"); } } public class Main { public static void main(String[] args) { // 使用匿名内部类扩展MyClass类 MyClass myClass = new MyClass() { @Override void printMessage() { System.out.println("Hello from Anonymous Inner Class!"); } }; myClass.printMessage(); } }
- 作为方法参数:
interface MyInterface { void doSomething(); } public class Main { public static void main(String[] args) { someMethod(new MyInterface() { @Override public void doSomething() { System.out.println("Doing something in anonymous inner class..."); } }); } public static void someMethod(MyInterface myInterface) { myInterface.doSomething(); } }
- 作为返回值:
interface MyInterface { void doSomething(); } public class Main { public static void main(String[] args) { MyInterface myInterface = createMyInterfaceInstance(); myInterface.doSomething(); } public static MyInterface createMyInterfaceInstance() { return new MyInterface() { @Override public void doSomething() { System.out.println("Doing something in anonymous inner class..."); } }; } }
总之,匿名内部类在Java中提供了一种简洁的方式来实现接口或扩展现有类,而无需创建单独的类文件。它们通常用于实现一次性使用的功能,例如事件处理程序、临时数据结构等。