jdk8新特性之lambda expressions
本文分两部分:
- 语法简单说明
- lambda的使用
注:这两部分内容均以类+注释的方式进行说明,并且内容均来自官方教程(https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html)。
第一部分:
/** public static void main(String[] args) { List<Person> persons = PersonGenerator.generatePerons(); public static void printPerson(List<Person> persons, CheckPerson cp) { interface CheckPerson{ |
第二部分:
假设一种场景:
A正在开发一个社交网络应用,考虑添加一个功能——管理员可以根据用户(Person)的不同特征,执行不同的操作,比如发送信息。
approaches是A写的不同的实现,从a1 ~ a8,看看每个方法较之前有什么明显的提升。
备注:1> Person 社交网络应用用户类 2> PersonGenerator 用户列表模拟产生类
方法一:
/** public static void main(String[] args) { public static void printPersonOlderThan(List<Person> persons, int age) { } |
方法二:
/** public static void main(String[] args) { public static void printPersonOlderThan(List<Person> persons, int low, int high) { } |
方法三:
/** public static void main(String[] args) { List<Person> persons = PersonGenerator.generatePerons(); } public static void printPerson(List<Person> persons, CheckPerson check) { } class SearchPersonsByAage implements CheckPerson { @Override } interface CheckPerson { |
方法四:
/** public static void main(String[] args) { List<Person> persons = PersonGenerator.generatePerons(); } public static void printPerson(List<Person> persons, CheckPerson check) { } interface CheckPerson { |
方法五:
/** public static void main(String[] args) { List<Person> persons = PersonGenerator.generatePerons(); } public static void printPerson(List<Person> persons, CheckPerson check) { } interface CheckPerson { |
方法六:
/** public static void main(String[] args) { List<Person> persons = PersonGenerator.generatePerons(); // 下面只是一个示例,用于说明通用功能接口的优势 } public static void printPerson(List<Person> persons, Predicate<Person> check) { public static void printAdmin(List<Aministrator> admins, Predicate<Aministrator> check) { } class Aministrator { @Override public void printAdmin() { } interface Predicate<T> { |
方法七:
/** public static void main(String[] args) { List<Person> persons = PersonGenerator.generatePerons(); } public static void processPersons(List<Person> persons, Predicate<Person> check, Consumer<Person> block) { } interface Predicate<T> { |
方法八:
/** public static void main(String[] args) { List<Person> persons = PersonGenerator.generatePerons(); } /** for (X p : source) { } } interface Predicate<T> { |
方法九:
/** public static void main(String[] args) { List<Person> persons = PersonGenerator.generatePerons(); } } interface Predicate<T> { |
jdk8新特性之lambda expressions的更多相关文章
- JDK8新特性之一Lambda
JDK8的新特性之一Lambda能将函数作为方法里面的参数使用. /** * JDK8新特性Lambda */ public class Test { public static void main( ...
- JDK8新特性(一) Lambda表达式及相关特性
函数式接口 函数式接口是1.8中的新特性,他不属于新语法,更像是一种规范 面向对象接口复习 在这里先回顾一下面向对象的接口,创建接口的关键字为interface,这里创建一个日志接口: public ...
- 1.8 新特性之 Lambda Expressions
Lambda expressions are allowed only at source level 1.8 or above The target type of this expression ...
- JDK8新特性之Lambda表达式
Lambda表达式主要是替换了原有匿名内部类的写法,也就是简化了匿名内部类的写法.lambda语法结构: (参数1,参数2...)->{重写方法的内容,不定义方法名} 先看一个使用匿名内部类定义 ...
- JDK8新特性02 Lambda表达式02_Lambda语法规则
//函数式接口:只有一个抽象方法的接口称为函数式接口. 可以使用注解 @FunctionalInterface 修饰 @FunctionalInterface public interface MyF ...
- JDK8新特性01 Lambda表达式01_设计的由来
1.java bean public class Employee { private int id; private String name; private int age; private do ...
- jdk8新特性--使用lambda表达式的延迟执行特性优化性能
使用lambda表达式的延迟加载特性对代码进行优化:
- JDK8新特性03 Lambda表达式03_Java8 内置的四大核心函数式接口
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.functio ...
- JDK8新特性:Lambda表达式
Lambda表达式,案例一:new Thread(() -> System.out.println("thread")); Lambda表达式,案例二:由参数/箭头和主体组成 ...
随机推荐
- UVALive 4957 Fake scoreboard
题意就是有n个队伍和m个题目 给出了每个队伍解决的题目数量 每个题目也给出了被解决的次数 然后求一个方阵. N,Y表示每个队伍是否过了哪个题目. 要求字典序最小. 这题给人的第一反应就是网络流. 虽然 ...
- JavaScript实现自定义短信模板
自定义短信模板,要求:可以插入关键字,当然是可以在点击到文本域中的任意位置,关键字以中括号包裹的形式出现[关键字],删除关键字要整个关键都删掉,而不是自己全删除. 详细在简书中 http://www. ...
- BitBlt介绍
设备上下文画图有非常多种方法.比如通过创建位图画刷,利用其填充一个区域来实现图像的绘制.此外,还能够使用CDC类的位图函数来输出位图到设备上下文中. BitBlt 用于从原设备中复制位图到目标设备,语 ...
- 转载:c++内存泄露机制
对于一个c/c++程序猿来说,内存泄漏是一个常见的也是令人头疼的问题.已经有很多技术被研究出来以应对这个问题,比方 Smart Pointer,Garbage Collection等.Smart Po ...
- duilib DirectUI库里面的一个简单的例子RichListDemo
1.首先来看这里的CRichListWnd 已经不再是从CWindowWnd继承了 classCRichListWnd:publicWindowImplBase 从WindowImplBase中,可以 ...
- JSP九个隐式对象及作用域
out:JspWriter实例对象,作用域为page(页面执行期) 向客户端输出内容 request:HttpServletRequest实例对象,作用域为request(用户请求期) 请求信息 re ...
- Android 网络编程与通信协议
大多数的Android应用程序都会使用HTTP协议来发送和接收网络数据,而Android中主要提供了两种方式来进行HTTP操作, HttpURLConnection和HttpClient.这两种方式都 ...
- Android - 消息机制与线程通信
以下资料摘录整理自老罗的Android之旅博客,是对老罗的博客关于Android底层原理的一个抽象的知识概括总结(如有错误欢迎指出)(侵删):http://blog.csdn.net/luosheng ...
- spring01
spring的体系结构图 第一个spring入门例子 01.创建一 ...
- 新浪微博开放平台OAuth授权解决方案(含代码)
前几日一位朋友项目中需要使用新浪微博的接口,故和这位朋友一同研究了新浪微博开放平台上面所提供的资料,首先要使用这些接口是需要用户登录并且授权的,新浪微博开放平台其实是提供两种授权方式的,第一种是:OA ...