Lamda表达式
学习视频:【狂神说Java】多线程详解
up主:遇见狂神说

优点
- 避免匿名内部类定义过多
- 可以使代码看起来更简洁
- 去掉了没有意义的代码,只留下核心代码
函数式接口
任何接口,如果只含唯一一个抽象方法,那么它就是一个函数式接口
对于函数式接口,我们可以通过lamda表达式来创建接口的对象
Lambda表达式的实现:
这是按照字母顺序逐步进行简化的过程
先创建函数式接口,然后实现各种不同的类创建,最后调用。
package com.thread;
public class TestLambda {
public static void main(String[] args) {
ILike like = new Like();
like.lambda();
like = new Like2();
like.lambda();
// 4.局部内部类
class Like3 implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda3");
}
}
like = new Like3();
like.lambda();
// 5.匿名内部类
like = new ILike() {
@Override
public void lambda() {
System.out.println("I like lambda4");
}
};
like.lambda();
// 6.用lambda 简化
like = ()-> {
System.out.println("I like lambda5");
};
like.lambda();
}
// 3.静态内部类
static class Like2 implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda2");
}
}
}
// 1 . 定义函数式接口
interface ILike{
void lambda();
}
// 2. 实现类
class Like implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda");
}
}
更简化的方法
package com.thread;
public class TestLambda2 {
public static void main(String[] args) {
ILove love = new Love();
love.love("洁");
ILove love1 = (String a )->{
System.out.println("I love you -> " + a);
};
love1.love("洁");
// 简化1. 去掉参数类型
love1 = (a) ->{
System.out.println("I love you -> " + a);
};
love1.love("洁");
// 简化2. 简化括号
love1 = a ->{
System.out.println("I love you -> " + a);
};
love1.love("洁");
// 简化3. 去掉花括号
love1 = a -> System.out.println("I love you -> " + a);
love1.love("洁");
}
}
interface ILove{
void love(String a);
}
class Love implements ILove{
@Override
public void love(String a) {
System.out.println("I love you -> " + a);
}
}
总结:
- Lambda表达式只有在只有一行的情况下才可以缩减成一行,若果有多行还需要用代码块包装
- 前提是接口为函数式接口
- 多个参数也可以去掉参数类型,但是要去掉就需要一起去除所有的参数类型不可以只去掉一个,且必须加上括号
本文详细介绍了Java中的Lambda表达式及其优势,包括如何简化代码和使用函数式接口。通过示例展示了从传统匿名内部类到Lambda表达式的转换过程,并逐步简化Lambda表达式的写法。此外,还强调了Lambda表达式仅在单行实现时可以进一步简化的条件,以及其与函数式接口的关系。
2361

被折叠的 条评论
为什么被折叠?



