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表达式,案例二:由参数/箭头和主体组成 ...
随机推荐
- 使用cocoapods导入第三方后 报错_OBJC_CLASS_$_XXX
我们手动导入第三方库的时候,感觉管理不是很方便,于是会选择使用Cocoapods管理.现在记录一下使用心得,当使用cocoapods导入afnetworking或者其他框架的时候,发现调用的时候总是报 ...
- Thrift初探:简单实现C#通讯服务程序
Thrift是一种可伸缩的跨语言服务框架,它结合了功能强大的软件堆栈的代码生成引擎,以建设服务,工作效率和无缝地与C++,C#,Java,Python和PHP和Ruby结合.thrift允许你定义一个 ...
- SKTransition类
继承自 NSObject 符合 NSObject(NSObject) 框架 /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0 ...
- Xcode HeaderDoc 教程(2)
Code Snippets,让一切变得更简单: 这真的非常easy,不是吗?但还能更简单一些吗? 本站以前介绍过 code snippets.请看这里. Code snippets 在 Xcode 中 ...
- Android中的多媒体显示之图片缩放
一:图片OOM异常: 代码示例: public class MainActivity extends Activity { private ImageView iv_imageView; protec ...
- android 程序防止被360或者系统给kill掉
关于如果和防止android 程序防止被360kill掉之后重启的问题,肯定大家也搜索了好多方法,都不好使,对不对,什么增高权限了,什么进程优先级了,这些东西都不是我们可控的,所以有没有一些非常保险的 ...
- 解决从源码编译ncurses6.0编译lib_gen.c报错的问题
直接从官网的源码编译时,会提示报错: gcc -DHAVE_CONFIG_H -I. -I../include -D_GNU_SOURCE -DNDEBUG -O2 --param max-inlin ...
- IO-文件 File 复制 读写 总结
一定要注意: 传入的参数,应该是包含文件名的完整路径名,不能把一个文件复制到[文件夹]中,因为[文件夹]本身是不能有输入输出流的,只能复制到一个[文件]中,否则会报异常. 以字节流读写的三种方式 pu ...
- String对象之间的比较
public class StringTest { @Test public void test01() { int a = 50; // 基本数据类型比较的是值 int b = 50; System ...
- HUD 2846 Repository
/* 开始想耍小聪明 直接map搞 代码短 好理解 空间够 恩 很好 就是 map慢死了 T了 */ #include<iostream> #include<cstdio> # ...