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表达式,案例二:由参数/箭头和主体组成 ...
随机推荐
- g++ gcc 的区别
我们在编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而c++代码用g++,或者说编译用gcc,链 接用g++,一时也不知哪个说法正确,如果再遇上个ext ...
- 下载doxygen
官网首页:http://www.stack.nl/~dimitri/doxygen/index.html 下载页面:http://www.stack.nl/~dimitri/doxygen/downl ...
- Objective-C中变量采用@property的各个属性值的含义
我们在OC中定义变量,可以自己来定义变量的setter方法来设置变量值,用getter方法来获取变量值.但是当变量数量增多时,还采用手动添加setter/getter方法来操作变量,就会使得程序代码量 ...
- Windows 如何在cmd命令行中查看、修改、删除与添加环境变量
转自:http://www.cnblogs.com/saptechnique/archive/2013/02/17/2914222.html 首先明确一点: 所有的在cmd命令行下对环境变量的修改只对 ...
- 有限状态机FSM(自动售报机Verilog实现)
有限状态机FSM(自动售报机Verilog实现) FSM 状态机就是一种能够描述具有逻辑顺序和时序顺序事件的方法. 状态机有两大类:Mealy型和Moore型. Moore型状态机的输出只与当前状态有 ...
- Apache Tomcat8必备知识
Apache Tomcat8必备知识 作者:chszs,转载需注明.博客主页: http://blog.csdn.net/chszs 一.Apache Tomcat 8介绍 Apache Tomcat ...
- C# 自己定义 implicit和explicit转换
explicit 和 implicit 属于转换运算符,如用这两者能够让我们自己定义的类型支持相互交换explicti 表示显式转换.如从 A -> B 必须进行强制类型转换(B = (B)A) ...
- 经典C面试题
12个有趣的C语言面试题 面试题C 摘要:12个C语言面试题,涉及指针.进程.运算.结构体.函数.内存,看看你能做出几个! 1.gets()函数 问:请找出以下代码里的问题: #include< ...
- Qt Style Sheets Reference
Qt Style Sheets support various properties, pseudo-states, and subcontrols that make it possible to ...
- 3_Linux_文件搜索指令
.3文件搜索命令 1)which 查找一个命令所在的路径 whereis 提供命令的帮助文件的信息 whatis 显示命令的概要信息whatis ls which提供命令的别名信息 2)find,基本 ...