@论程序猿的自我修养
浅析lambda的利与弊
lambda的好处
话不多说,上代码:
比如下列这段代码:
package demo04;
public class Test {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(“helloworld”);
}
}).start();
}
}
运行结果为:helloworld
接下来这段代码运行结果同上,不过代码量明显的降低,提升了开发效率。
package demo04;
public class Test {
public static void main(String[] args) {
new Thread(()-> System.out.println(“helloworld”)).start();
}
}
在举一个有参数的数组例子
public class Test66 {
public static void main(String[] args) {
List<Phone> list = new ArrayList<Phone>();
list.add(new Phone("小米", 2199));
list.add(new Phone("荣耀9xpro", 2299));
list.add(new Phone("华为", 4000));
list.stream().forEach((c) -> System.out.println(c));
}
Lambda表达式虽然带来了代码的简洁,但是也有其局限性。
通过上面的代码可以看出存在以下问题:
- 可读性差,与啰嗦的但是清晰的匿名类代码结构比较起来,Lambda表达式一旦变得比较长,就难以理解
- 不便于调试,很难在Lambda表达式中增加调试信息,比如日志
- 版本支持,Lambda表达式在JDK8版本中才开始支持,如果系统使用的是以前的版本,考虑系统的稳定性等原因,而不愿意升级,那么就无法使用。
那么一般lambda什么时候该用什么时候不该用呢?
Lambda比较适合用在简短的业务代码中,并不适合用在复杂的系统中,会加大维护成本。