匿名内部类的用法一直挺受欢迎的,是写接口实现时不想折腾一个类文件出来的时候,用它真方便。你写个new 接口名() {...},方法一重写,对象就搞定了,速度快,代码也清爽,适合事件监听、线程啥的场景。

在 Java 里,匿名内部类就是你临时写个类出来,名字都不取那种。常见用法就是实现接口或者继承类的时候,比如监听按钮点击,不用新建个类,直接一写就能跑,挺省事的。

像下面这个例子就挺经典:

FlyAble f = new FlyAble() {
  @Override
  public void fly() {
    System.out.println("我飞了~~~");
  }
};
f.fly();

你看,一行代码就把接口实现加对象创建一块搞定了,简洁明了。语法也好记:

new 接口名() {
  // 实现方法
};

或者继承类时,写成:

new 父类名(参数) {
  // 重写方法
};

不过要注意几点:不能有静态成员(常量例外),不能写abstract,也不支持初始化块。还有,它只能在方法里或代码块里用,作用域不大。

实际开发中,事件监听、Runnable 线程、单例封装,这类地方用它都挺合适的。代码少,可读性强,维护起来也舒服。就是别太滥用,要是逻辑太复杂还是老老实实写个类吧。

如果你正写 Java,碰到需要快速实现接口的地方,不妨试试匿名内部类,写起来挺爽的。