电脑世界
霓虹主题四 · 更硬核的阅读氛围

Lambda 表达式和类,到底谁更轻快?

发布时间:2026-04-12 02:30:39 阅读:2 次

写 Java 的人,常遇到这种场景:给一个按钮加点击事件,或者对 List 排个序。以前得先写个内部,甚至单独建个类文件——光是写 public class MyClickListener implements OnClickListener 这一行,手就有点累。

类太重,lambda 来救场

Java 8 引入 lambda 表达式后,很多「只用一次、逻辑简单」的类,直接缩成一行。比如排序:

Collections.sort(names, (a, b) -> a.length() - b.length());

以前得写个 Comparator 类或匿名类,现在连名字都不用起,参数、箭头、逻辑全挤在括号里,干净利落。

但 lambda 不是万能胶

它只能替代函数式接口(只有一个抽象方法的接口),像 RunnableComparatorConsumer 这些没问题;可一旦要实现多个方法、带状态、需要复用或调试,还是得靠正经的类。

比如你写一个网络请求回调,既要处理成功、又要捕获异常、还要记录日志、下次还得复用——这时候硬塞进 lambda,代码会迅速变皱,不如老老实实建个 NetworkCallback 类,字段、方法、注释都安排明白。

再看一个对比

模拟用户登录验证逻辑:

// 用 lambda(适合简单判断)
Predicate<String> isValidEmail = s -> s != null && s.contains("@");

// 用类(适合带规则、可扩展)
class EmailValidator {
    private final String domain;
    EmailValidator(String domain) { this.domain = domain; }
    boolean validate(String email) {
        return email != null && email.endsWith("@" + domain);
    }
}

前者随手一写就跑,后者改域名、加黑名单、记失败次数都方便。

说白了,lambda 是「即开即用」的工具刀,类是「可组装、能升级」的工具箱。选哪个,不看时髦,看手头这活儿要不要留后路。