美文网首页
行为参数化------Java8 in action

行为参数化------Java8 in action

作者: lynnnnyl | 来源:发表于2022-10-18 18:18 被阅读0次

行为参数化是一种类似于策略设计模式的模式,可以轻松地适应不断变化的需求。

具体而言:行为参数化就是让一个方法接受多种行为(或战略或一段代码)作为参数,并在内部使用,来完成不同的行为。

Execute Around模式:我们访问资源需要关注对资源的锁定、对资源的申请和释放,还有考虑可能遇到的各种异常。这些事项本身与代码的逻辑操作无关,但我们不能遗漏。也就是说进入方法时获取资源,退出方法时释放资源。这种处理就进入了Execute Around模式的范畴。
只有需要函数式接口的时候才可以使用lambda表达式,同一个lambda表达式可以与不同的函数式接口联系,只要它们的抽象方法签名能够兼容。
eg:

[图片上传失败...(image-38daa4-1666174695351)]

任何函数式接口都不允许抛出受检异常(checked exception),在使用Lambda表达式时,如果需要抛出异常,有两种方法:

  1. 定义一个自己的函数式接口,并声明受检异常。

    [图片上传失败...(image-c6bd12-1666174695351)]

  2. try catch捕获异常

    [图片上传失败...(image-7164e5-1666174695351)]

复合Lambda表达式的有用方法

  1. 比较器复合

    studentList.sort(comparing(Student::getAge).reversed());  //逆序---reversed()的使用
    studentList.sort(comparing(Student::getAge))
            .reversed()
               .thenComparing(Student::getDegree);   //在比较学生年龄时,出现相同值,则按照分数再排序,thenComparing()的使用
    
  2. 谓词复合

    谓词接口包括三个方法:negate、and和or

    Predicate<Apple> notRedApple = redApple.negate(); // 产生现有Predicate对象redApple的非
    Predicate<Apple> redAndHeavyAppleOrGreen = 
        redApple.and(a -> a.getWeight() > 150)
                .or(a -> "green".equals(a.getColor())); // 筛选出重150 g以上的红苹果或者绿苹   
    
  3. 函数复合

    Function接口具有andThencompose两个默认方法,它们都会返回Function的一个实例。

相关文章

  • java8 in action行为参数化

    行为参数化:拿出一个代码块,把它准备好却不去执行它。这个代码块以后可以被你程序的其他部分调用,这意味着你可以推迟这...

  • 行为参数化------Java8 in action

    行为参数化是一种类似于策略设计模式的模式,可以轻松地适应不断变化的需求。 具体而言:行为参数化就是让一个方法接受多...

  • Lambda表达式知识手册

    1.行为参数化 行为参数化是将方法的具体实现抽象化,java8之前可以使用接口(策略模式,根据不同需求需要编写...

  • java8之行为参数化,你用了吗?

    java8之行为参数化,你用了吗? java8新增加了方法引用::语法(将方法作为参数)。将方法的引用传递进去,可...

  • java8 in action:第二章学习,行为参数化

    之前在第一章中提到了谓词(predicate),第一章超链接,今天继续进行扩展。第一章中找指定重量的苹果或者指定颜...

  • Java8函数式编程之二 : Lambda表达式

    针对上篇博客Java8函数式编程之一: 行为参数化 - 简书最后留下的问题,也就是java8怎样解决匿名内部类代码...

  • java8学习:行为参数化

    将“行为“作为参数,传进函数,然后去执行 直接上例子 目标:获取所有颜色为绿色的苹果 对象:苹果列表 行为:筛选出...

  • Java8新特性

    Java8新特性 Project 01 给出了行为参数化传递代码的方式 定义一个标准的谓词模板 用ApplePre...

  • 新年第一本书

    java8实战下周写总结

  • Java8 学习笔记

    @(in action系列)[java8, lambda, stream] Java8 学习 java8 能高效的...

网友评论

      本文标题:行为参数化------Java8 in action

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