Lamda表达式
函数式接口
一个接口只包含了唯一一个抽象方法,他就是函数式接口
public class lambda {
//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 Like3 implements ILike {
@Override
public void lambda() {
System.out.println("I like lambda3");
}
}
like = new Like3();
like.lambda();
//5. 匿名内部类,没有类的名称,必须依靠接口或者父类,new了一个接口或者父类
like = new ILike() {
@Override
public void lambda() {
System.out.println("I like lambda4");
}
};
like.lambda();
//6. 用lambda简化,只有一个类,只有一个方法,意思就是new 名称 方法都是固定了,就不用写了
like = () -> {
System.out.println("I like lambda5");
};
like.lambda();
}
}
//1. 定义函数式接口
interface ILike {
void lambda();
}
//2. 实现类
class Like implements ILike {
@Override
public void lambda() {
System.out.println("I like lambda");
}
}
简化lambda表达式
也可以简化花括号(因为代码只有一行)
总结
lambda表达式只能有一行代码的情况下,才能简化成为一行(去掉花括号),如果有多行,就需要用代码块包裹。
前提是接口必须是函数式接口,只能有一个方法
多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号。