1 简介
Lambda:表达式 特殊的额匿名内部类,语法更简单
Lambda表达式允许把函数作为一个方法的参数(函数作为方法参数传递),将代码项数据一样传递
->操作符 将包表达式为两部分
左侧:(参数1…)
右侧:{}内部是方法体
注意事项:
形参列表的数据类型会自动推断
如果形参列表为空,只需保留()
如果形参只有一个 ()可以省略 只需要参数的名称即可
如果执行语句只有一句,且无返回值。{}可以省略,
如果有返回值,则若想省去{},则必须同时省略return,且执行语句也保留只有一句
lambda不会生成一个单独的内部类文件(.class)
2 Lambda入门
public class Lambda1 {
public static void main(String[] args) {
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("线程执行了........");
}
};
new Thread(runnable).start();
// lambda 表达式
Runnable runnable1 = () -> {System.out.println("线程执行了2........"); };
new Thread(runnable1).start();
Comparator<String> c= new Comparator<String>() {
@Override
public int compare(String o1,String o2) {
return o1.length()-o1.length();
}
};
//lambda表达式写法
Comparator<String> c2 = (o1,o2) -> {
return o1.length()-o1.length();
};
// lambda表达式写法
Comparator<String> c3 = (o1,o2) -> o1.length()-o1.length();
}
}
3 函数式接口
如果一个接口只有一个抽象方法,则改接口成为函数式接口,函数式接口可以用lambda表达式
lambda表达式会被匹配到之歌抽象方法上
@FunctionalInterface 检测接口是否符合函数式接口