【JavaSE】Lambda(学习笔记)
2023-12-26 06:24:14
一、Lambda概述
1、函数式编程思想
拿数据做操作,有悖于面对对象操作
强调做什么,而不是过程
2、Lambda使用前提
有一个接口
接口只有一个抽象方法
二、Lambda标准格式
(形式参数) -> {代码块}
():形式参数
->:箭头
{}:代码块
三、Lambda使用
1、无参无返
public interface test1 {
void domain();
}
public class doDemo1 {
public static void main(String[] args) {
doDoMain(() -> System.out.println("domain"));
}
public static void doDoMain(test1 t){
t.domain();
}
}
2、带参无返
public interface test2 {
void domain(String s);
}
public class doDemo2 {
public static void main(String[] args) {
doDoMain((String s) -> {
System.out.println(s);
});
doDoMain((s) -> System.out.println(s));
doDoMain(s -> System.out.println(s));
}
public static void doDoMain(test2 t) {
t.domain("domain");
}
}
3、带参有返
public interface test3 {
int add(int a, int b);
}
public class doDemo3 {
public static void main(String[] args) {
doAdd((int a, int b) -> {
return a + b;
});
doAdd((a, b) -> a + b);
}
public static void doAdd(test3 t) {
int sum = t.add(10, 20);
System.out.println(sum);
}
}
4、使用说明
1)Lambda的实现
先使用方法,后定义方法体
2)关于lambda的省略
- 形式参数类型可以省略,但是”不患寡而患不均“
- 形式参数如果只有一个可以省略小括号
- 代码块如果只有一条,可以省略大括号和分号(对于return语句,需要省略掉return)
3)上下文环境
必须有上下文环境,才能推导出lambda对应的接口
- 局部变量的赋值
- 调用方法的参数
四、Lambda与匿名内部类的区别
1、所需类型不同
匿名内部类:接口、抽象类、具体类
Lambda:接口
2、使用限制不同
匿名内部类:无抽象方法个数限制
Lambda:只能有一个抽象方法
3、实现原理不同
匿名内部类:产生一个class字节码文件
Lambda:字节码动态生成
文章来源:https://blog.csdn.net/wmh1024/article/details/135160165
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!