匿名内部类的用法一直挺受欢迎的,是写接口实现时不想折腾一个类文件出来的时候,用它真方便。你写个new 接口名() {...},方法一重写,对象就搞定了,速度快,代码也清爽,适合事件监听、线程啥的场景。
在 Java 里,匿名内部类就是你临时写个类出来,名字都不取那种。常见用法就是实现接口或者继承类的时候,比如监听按钮点击,不用新建个类,直接一写就能跑,挺省事的。
像下面这个例子就挺经典:
FlyAble f = new FlyAble() {
@Override
public void fly() {
System.out.println("我飞了~~~");
}
};
f.fly();
你看,一行代码就把接口实现加对象创建一块搞定了,简洁明了。语法也好记:
new 接口名() {
// 实现方法
};
或者继承类时,写成:
new 父类名(参数) {
// 重写方法
};
不过要注意几点:不能有静态成员(常量例外),不能写abstract,也不支持初始化块。还有,它只能在方法里或代码块里用,作用域不大。
实际开发中,事件监听、Runnable 线程、单例封装,这类地方用它都挺合适的。代码少,可读性强,维护起来也舒服。就是别太滥用,要是逻辑太复杂还是老老实实写个类吧。
如果你正写 Java,碰到需要快速实现接口的地方,不妨试试匿名内部类,写起来挺爽的。
暂无评论