Lambda表达式
1.避免匿名内部类定义过多
2.可以让代码看起来更简洁
3.去掉了一对无用的代码。
函数式接口:
1.任何接口只包含唯一一个抽象方法
2.对于函数是借口,可用用lambda表达式来创建改接口的对象
/*
1.推导lambda表达式
*/
public class TestLambda01 {
public static void main(String[] args) {
Like like = new Like();
like.lambda();
}
}
//1.定义一个函数式接口
interface ILike{
void lambda();
}
//实现类
class Like implements ILike{
@Override
public void lambda() {
System.out.println("i like Lambda!");
}
}
逐步简化:步骤
/*
1.推导lambda表达式
*/
public class TestLambda01 {
//3.静态内部类
static class Like2 implements ILike{
@Override
public void lambda() {
System.out.println("I Like Lambda2!");
}
}
public static void main(String[] args) {
ILike like = new Like();
like.lambda();
like = new Like2();
like.lambda();
//4.局部内部类
class Like1 implements ILike{
@Override
public void lambda() {
System.out.println("I like Lambda!3");
}
}
like = new Like1();
like.lambda();
//5.匿名内部类 没有类的名称,必须借助接口或者父类
like = new ILike() {
@Override
public void lambda() {
System.out.println("I like Lambda!4");
}
};
like.lambda();
//6.用lambda简化
like = ()->{
System.out.println("I like Lambda!5");
};
like.lambda();
}
}
//1.定义一个函数式接口
interface ILike{
void lambda();
}
//实现类
class Like implements ILike{
@Override
public void lambda() {
System.out.println("i like Lambda!");
}
}
最终简洁代码:
public class TestLambda02 {
public static void main(String[] args) {
ILove love;
love = (a)->{
System.out.println("I Love You!---"+a);
};
love.Love(520);
}
}
interface ILove{
void Love(int a);
}
总结:
1.lambda表达式,在省略参数类型时,需要全部省略
2.只输出一行代码时可以省略花括号