Lamda表达式
1.理解Functional Interface(函数式接口)是学习Java8 lambda表达式的关键所在。
2.函数式接口的定义:
1.任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口,
2.对于函数式接口,我们可以通过lambda表达式来创建接口的对象
为什么要用lambda表达式
1.避免匿名内部类定义过多
2.可以让你的代码看起来简洁
3.去掉了一堆没有意义的代码,只留下核心的逻辑。
//接口且只有一个方法
public interface Ilove {
public void love(int a);
}
public class Love implements Ilove {
@Override
public void love(int a) {
System.out.println("I Love You:"+a+"号");
}
}
import com.lambda.interfaces.Ilove;
import com.lambda.interfacesImp.Love;
public class TestLambda {
//静态内部类
static class Love2 implements Ilove{
@Override
public void love(int a) {
System.out.println("I Love You:"+a+"号");
}
}
public static void main(String[] args) {
//局部内部类
class Love3 implements Ilove{
@Override
public void love(int a) {
System.out.println("I Love You:"+a+"号");
}
}
//匿名内部类
Ilove ilove=new Ilove(){
@Override
public void love(int a) {
System.out.println("I Love You:"+a+"号");
}
};
ilove.love(5);
//lambda表达式
Ilove ilove2=(int a)->{
System.out.println("I Love You:"+a+"号");
};
ilove2.love(6);
//简化lambda表达式 最终形态
Ilove ilove3=a-> System.out.println("I Love You:"+a+"号");
ilove3.love(520);
//正常
Ilove loves=new Love();
loves.love(2);
//静态内部类
loves =new Love2();
loves.love(3);
//局部内部类
loves=new Love3();
loves.love(4);
}
}
总结
1.lambda表达式只能有一行代码的情况下才能简化成一行,如果有多行,那么就用代码块包裹。
2.前提是接口为函数式接口
3.多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号。