【狂神说Java】Lambda表达式
lambda表达式
- 为什么要使用Lambda表达式
- 避免匿名内部类定义过多
- 代码看起来简洁
- 去掉了无意义代码,只留下核心的逻辑
函数式接口(Functional Interface)的定义
- 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
public Interface Runnable{
public abstract void run();
}
class Run implements Runnable{
System.out.println("Run");
}
- 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。
Runnable runner = () -> System.out.println("Run");
public class LambdaTest {
// 3.静态内部类
static class Like2 implements IntLike {
@Override
public void lambda(int a) {
System.out.println("Lambda表达式"+a);
}
}
public static void main(String[] args) {
IntLike like = new Like();
like.lambda(1); //1,2操作后
like = new Like2();
like.lambda(2); // 3 操作后
// 4.局部内部类
class Like3 implements IntLike {
@Override
public void lambda(int a ) {
System.out.println("Lambda表达式"+a);
}
}
like = new Like3();
like.lambda(3); // 4 操作后
// 5.匿名内部类,没有类的名称,必须借助接口或者父类
// 直接实现接口,没有类名
like = new IntLike() {
@Override
public void lambda(int a) {
System.out.println("Lambda表达式"+a);
}
};
like.lambda(4);
//6.用lambda简化
like = (int a) -> System.out.println("Lambda表达式"+a);
like.lambda(5);
// 简化,去掉参数类型和括号
like = a -> System.out.println("Lambda表达式"+a);
like.lambda(6);
//
// // lambda表达式,实例化函数式接口,直接实现接口中的方法
// IntLike like = () -> System.out.println("Lambda表达式5");
// like.lambda()
//
//
new Thread(()-> System.out.println("test")).start();
}
}
// 1.定义一个函数式接口
interface IntLike {
void lambda(int a);
}
// 2.实现接口
class Like implements IntLike {
@Override
public void lambda(int a) {
System.out.println("Lambda表达式"+a);
}
}
lambda应用
例如:Thread中直接实现Runnable接口,带参数
new Thread(() -> System.out.println("test")).start();

浙公网安备 33010602011771号