Lambda

作者: 李翾 | 来源:发表于2019-04-03 14:35 被阅读0次

    与[匿名类] 概念相比较,
    Lambda 其实就是匿名方法,这是一种把方法作为参数进行传递的编程思想。

    虽然代码是这么写

    filter(heros, h -> h.hp > 100 && h.damage < 50);
    

    但是,Java会在背后,悄悄的,把这些都还原成匿名类方式
    引入Lambda表达式,会使得代码更加紧凑,而不是各种接口和匿名类到处飞。

    Lambda表达式虽然带来了代码的简洁,但是也有其局限性。

    1. 可读性差,与啰嗦的但是清晰的匿名类代码结构比较起来,Lambda表达式一旦变得比较长,就难以理解
    2. 不便于调试,很难在Lambda表达式中增加调试信息,比如日志
    3. 版本支持,Lambda表达式在JDK8版本中才开始支持,如果系统使用的是以前的版本,考虑系统的稳定性等原因,而不愿意升级,那么就无法使用。

    Lambda比较适合用在简短的业务代码中,并不适合用在复杂的系统中,会加大维护成本。

    举例如下:

     Random r = new Random();
            List<Hero> heros = new ArrayList<Hero>();
            for (int i = 0; i < 5; i++) {
                heros.add(new Hero("hero " + i, r.nextInt(1000), r.nextInt(100)));
            }
            System.out.println("初始化后的集合:");
            System.out.println(heros);
            System.out.println("使用Lamdba的方式,筛选出 hp>100 && damange<50的英雄");
            filter(heros,h->h.hp>100 && h.damage<50);
    
    private static void filter(List<Hero> heros,HeroChecker checker) {
            for (Hero hero : heros) {
                if(checker.test(hero))
                    System.out.print(hero);
            }
        }
    
    public  interface HeroChecker {
    
    boolean test(Hero hero);
    }
    
    

    相关文章

      网友评论

          本文标题:Lambda

          本文链接:https://www.haomeiwen.com/subject/lfqzbqtx.html