java如何构建匿名类
匿名类的定义与用途
匿名类是没有显式名称的局部类,通常用于简化代码结构,尤其是在需要实现接口或继承类但仅使用一次的场合。常见于事件监听器、线程实现等场景。
匿名类的语法结构
匿名类的语法基于继承或接口实现,格式如下:

new 父类构造器/接口() {
// 匿名类的成员定义
};
实现接口的匿名类
以下示例展示如何通过匿名类实现Runnable接口:
Runnable task = new Runnable() {
@Override
public void run() {
System.out.println("匿名类实现Runnable");
}
};
new Thread(task).start();
继承类的匿名类
匿名类也可以继承现有类并重写方法。以下示例继承Thread类:

Thread thread = new Thread() {
@Override
public void run() {
System.out.println("匿名类继承Thread");
}
};
thread.start();
带参数的匿名类
若父类构造器需要参数,可在new语句中直接传递:
abstract class Animal {
String name;
Animal(String name) { this.name = name; }
abstract void speak();
}
Animal dog = new Animal("Dog") {
@Override
void speak() {
System.out.println(name + " says Woof!");
}
};
dog.speak();
匿名类的限制
- 无法定义构造器,因匿名类没有类名。
- 不能包含静态成员(除常量外)。
- 作用域仅限于定义处,无法在其他地方复用。
匿名类与Lambda表达式对比
对于单方法接口(如Runnable),Lambda表达式更简洁:
Runnable lambdaTask = () -> System.out.println("Lambda实现");
但匿名类支持多方法接口或需要重写多个方法时更灵活。






