Lambda表达式概念
简介:Lambda表达式是于jdk1.8新出的简化语法,可以代替匿名内部类的实现.
前提:目标只能有一个需要实现的方法,不能多个,也就是所谓的目标必须是函数式接口.
Lambda的优点
- 避免内部类定义过多
- 使代码看上去更加简洁
- 省略一些无意义代码,指向核心
Lambda表达式实现
基本语法:
接口类型 接口名称 =() -> {重写方法的代码段};
示例一(方法无返回值):
public class Tang1 {
public static void main(String[] args) {
//最初始化使用匿名内部类实现接口
new Test(){
@Override
public void lambda() {
System.out.println("Lambda1");
}
}.lambda();
//使用Lambda表达式实现
Test test=() -> {
System.out.println("Lambda2");
};
test.lambda();
//使用Lambda表达式(简化) 注意:这个只适用于一句话
Test test1=()->System.out.println("Lambda3");
test1.lambda();
//案例:使用Lambda简化创建线程
new Thread(() -> System.out.println("Lambda4")).start();
//方便理解案例:
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("于Lambda4相同");
}
}).start();
}
}
interface Test {
void lambda();
}
实例二(方法有返回值):
public class Tang2 {
public static void main(String[] args) {
//使用未简化Lambda表达式
Test8 test=(a) -> {System.out.println("Lambda"+a);};
test.lambda(1);
//使用简化Lambda(简化第一次)
test=(a) -> System.out.println("Lambda"+a);
test.lambda(2);
//使用简化Lambda表达式(简化第二次) 注意:如果式多个参数则需要带上括号
test= a -> System.out.println("Lambda"+a);
test.lambda(3);
//如果还能简化的化往小伙伴们指出
}
}
interface Test8{
void lambda(int a);
}
作者如果有错误和不当的地方,还请大家多多指教。