Lambda表达式
来源:互联网 发布:淘宝的xbox手柄 编辑:程序博客网 时间:2024/06/08 14:38
Lambda表达式是JAVA8的新特性
匿名类
new Thread( () -> System.out.print(“”));
listA.forEach( (a) -> System.out.print(a));
Predicate过滤public static void main(args[]){ List languages = Arrays.asList("Java", "Scala", "C++", "Haskell", "Lisp"); System.out.println("Print language whose length greater than 4:"); filter(languages, (str)->str.length() > 4);}public static void filter(List names, Predicate condition) { for(String name: names) { if(condition.test(name)) { System.out.println(name + " "); } }}
Lambda VS Java匿名内部类
既然lambda表达式即将正式取代Java代码中的匿名内部类,那么有必要对二者做一个比较分析。
1. 一个关键的不同点就是关键字 this。匿名类的 this 关键字指向匿名类,而lambda表达式的 this 关键字指向包围lambda表达式的类。
2. 另一个不同点是二者的编译方式。Java编译器将lambda表达式编译成类的私有方法。使用了Java 7的 invokedynamic 字节码指令来动态绑定这个方法。
3. lambda表达式内可以使用方法引用,仅当该方法不修改lambda表达式提供的参数。本例中的lambda表达式可以换为方法引用,因为这仅是一个参数相同的简单方法调用。
方法引用
方法引用使lambda表达式更简化
view.setOnClickListener(view -> {doSomething(view)})// 使用方法引用view.setOnClickListener(this::doSomething});
但要保证引用的方法和回调的参数一致
默认接口方法
当你往一个接口增加方法时,所有已经实现该接口的类就会变得编译不过,除非这些类能实现新增加的方法
默认接口方法提供的解决方案是,接口里可以定义一个默认的方法,在方法体里有它的默认实现
public interface MyView {
void showProgressbar();
// 关键字 default
default void hideProgressbar() {
// do something here
}
}
Android Studio自动转换Lambda表达式
使用快捷键 alt/option + enter ,将匿名类自动转换成Lambda表达式,或将Lambda表达式转换成方法引用
阅读全文
0 0
- Lambda Expressions(Lambda表达式)
- Lambda表达式
- Lambda表达式
- Lambda 表达式
- Lambda表达式
- lambda表达式
- lambda表达式
- Lambda表达式
- Lambda表达式
- Lambda表达式
- Lambda表达式
- Lambda 表达式
- Lambda表达式
- Lambda 表达式
- Lambda 表达式
- Lambda表达式
- Lambda表达式
- Lambda 表达式
- H5 文件下载
- 一、java运行环境安装之-linux centos6.6安装mysql 5.6安装步骤【rpm安装方式】
- H5通过浏览器录制视屏或音频
- HDU6058 [2017多校联合3] Kanade's sum 我可能是个假链表
- AOJ894 种花【图的搜索+回溯】
- Lambda表达式
- HDU1042 N!
- 六.gradle的自定义任务
- 邻接矩阵 建图
- 关于前端脚手架yeoman的使用
- Java 7之基础
- 再谈FFT,不过如此。应该是这个题简单
- UML类图几种关系的总结
- DDR的几个概念