初识Lambda表达式
一 Lambda引用背景
- Java代码的臃肿复杂
- 缺乏函数式编程能力
二 Lambda概念及使用
-
概念:匿名函数,即没有函数名的函数,可以作为方法的参数
-
表达式定义:
(parameters) -> expression
或
(parameters) ->{ statements; } -
规范定义:
需要存在一个对应的函数式接口,即有一个只有一个抽象方法的接口
只有一个参数可以不使用小括号,没有参数或者多于一个参数使用小括号
参数类型建议添加
方法主体只有一个语句可以不使用大括号,可以不指定返回值;多于一个语句必须使用大括号,如果有返回值必须用return显示指定返回值 -
变量作用域
方法主体引用的变量可以不用final修饰,但是不能修改
内部定义的变量名不能与外部变量名重复 -
应用场景
匿名内部类``` //Before Java 8: new Thread(new Runnable() { @Override public void run() { System.out.println("Before Java8 "); } }).start(); //Java 8 way: new Thread( () -> System.out.println("In Java8!") ).start(); ```
//Before Java 8: Collections.sort(names, new Comparator<String>() { @Override public int compare(String a, String b) { return b.compareTo(a); } }); //Java 8 way: Collections.sort(names, (String a, String b) -> { return b.compareTo(a); });