java8之行为参数化(二)
来源:互联网 发布:淘宝如何做展现词 编辑:程序博客网 时间:2024/06/05 17:02
上一章讲到我们可以使用策略模式使得变动的代码块更具有扩展性,实现参数化。可是,如果变动的代码块只使用一次呢,也就是说,我们仅用一次接口的实现类呢?这时,我们会发现,为接口编写实现类简直就是浪费。显然,匿名类此时就派上用场了。
// [Apple{color='green', weight=155}]List<Apple> heavyApples2 = filter(inventory, new ApplePredicate(){ public boolean test(Apple apple){ return apple.getWeight() > 150; }});System.out.println(heavyApples2);怎么样,是不是觉得看起来容易多了?但这都是java8之前的东西了,java8出现之后,更简便的方法变横空出世了。
在调用部分,我们只需写调用方法即可,系统会自动将方法注入到接口的实现方法内部。
public static boolean isHeavyApple(Apple apple) { return apple.getWeight() > 150;}
// [Apple{color='green', weight=155}]List<Apple> heavyApples = filterApples(inventory, FilteringApples::isHeavyApple);System.out.println(heavyApples);是不是感觉特别简洁?别急,还有更简洁的,我们可以不用写函数,直接采用匿名函数,也就是Lambda。
// [Apple{color='green', weight=155}]List<Apple> heavyApples2 = filterApples(inventory, (Apple a) -> a.getWeight() > 150);System.out.println(heavyApples2);到现在为止,想想我们要实现行为参数化,需要几个步骤呢?
1、函数定义。
2、函数的参数为一个接口,定义这个接口
3、调用这个函数。
其实,这个接口被称为断言,在java8中已经定义好了Predicate
我们要做的就是定义一个函数,并在调用这个函数时,将lambda传进断言里即可。
阅读全文
0 0
- java8之行为参数化(二)
- java8之行为参数化(一)
- Java8学习笔记之行为参数化
- Java8-行为参数化
- 【Java8】 行为化参数
- java8之行为参数化(函数为值化)
- java8新特性(一):行为参数化
- JAVA8实战 第二章行为参数化
- 从JAVA行为参数化到 JAVA8 lamada,方法引用
- Java8函数式编程之一: 行为参数化
- java8实战一:通过行为参数化传递代码
- Map(二)之LinkedHashMap(java8)
- (二)Java8之Lambda表达式
- Java8 in action(1) 通过行为参数化传递代码--lambda代替策略模式
- JAVA8 in Action:行为参数化,匿名类及lambda表达式的初步认知实例整理
- Java 8 之 行为参数化
- 设计模式之行为模式(二)
- java8大放异彩(二)
- Spring(AbstractRoutingDataSource)实现动态数据源切换
- Dijkstra算法模板
- python实现希尔排序
- Intellij添加Maven模块
- 3.2 Linux C程序解析
- java8之行为参数化(二)
- 习题6-13 电子表格计算器(Spreadsheet Calculator, ACM/ICPC World Finals 1992, UVa215)
- Apache HttpClient4.5(三)
- 第十天 PHP的首次讲课
- jedis连接池及redis封装(util)
- [二分+差分]BZOJ 4326——NOIP2015 运输计划
- sklearn Classification metrics
- 写一个函数返回参数二进制中 1 的个数,提示:使用位操作符:按位与&
- 读取文件乱码问题