支持函数式编程:把函数本身作为参数传入。
优点:
简化了匿名内部类的编写
支持并行编程:多个处理器同时处理多个任务
缺点:
可读性差,代码越长越差
有条件限制,只有函数式接口才可以用
public class Test01 {
public static void main(String[] args) {
D d = new D() {
@Override
public int jisuan(int x, int y) {
return x + y;
}
};
int sum = d.jisuan(3, 4);
System.out.println(sum);
}
interface D {
public int jisuan(int x, int y);
}
/*匿名内部类,直接实现接口
new D(){
@Override
public int jisuan(int x,int y) {
return x+y;
}
};
*/
/*Lamdba替换上方匿名内部类
(int x,int y) -> x+y;//如果有返回值默认有return,没有返回值默认无return。
*/
}
Lamdba的其他几种形式:
//形参类型可以不用写
(x,y)-> x+y
//如果实现体有很很多语句,则不可以省略花括号,return也得显示
(x,y)->{int z=x+y;return z;};
//如果形参只有一个,前面的小括号都可以省略
x->x;
函数可以作为参数
test(1,2,(x,y)->{int z=x+y;return z;}); //会发现把函数作为参数了
public static void test(int a,int b, D ) {
d.jisuan(a, b);
}
函数式接口
接口中只有一个抽象方法
@FunctionalInterface //函数式接口的注解
interface {
public int a(int x);
}