lambda表达式简化
未简化前:
简化一:去掉参数类型
public class Testlambda { public static void main(String[] args) { //lambda表达式 ILove love; love=( a)-> { System.out.println("I Love You"+a); }; love.love(2); } } interface ILove{ void love(int a); }
简化二:去掉括号
public class Testlambda { public static void main(String[] args) { //lambda表达式 ILove love; love= a-> { System.out.println("I Love You"+a); }; love.love(2); } } interface ILove{ void love(int a); }
简化三:去掉花括号,前提是花括号中只有一行
public class Testlambda { public static void main(String[] args) { //lambda表达式 ILove love; love= a-> System.out.println("I Love You"+a); love.love(2); } } interface ILove{ void love(int a); }
注:
lambda表达式只能由一行代码的情况,才能简化为一行,如果由都澳航那么就用代码块包裹
前提是接口为函数式接口
多个参数也可以去掉参数类型,要去掉,都去掉,不能带一个去一个
总结
- Lambda表达式实质上是一个可传递的匿名函数,可以实现函数式编程。
- 语法形式为:(参数列表) -> {代码体},去掉了方法名称、返回值声明等代码模板。
- Lambda通常用来传递给函数式接口的参数或赋值给函数式接口变量。
- 使用Lambda能避免创建匿名内部类,代码更简洁。
- Lambda可以访问外层作用域的变量,这称为闭包。
- Lambda表达了一个块的代码,也可以直接用于调用,称为代码块。
- Lambda可以延迟执行,只有被调用时才会执行。
- 常用的函数式接口如Consumer、Supplier、Function等。
- 可以用方法引用来直接引用已有的方法实现,更简洁。
- Lambda靠Java的类型推断来判断参数和返回类型。
- Lambda让Java加入了函数式编程的特性,可以写出更简洁、灵活的代码。
- 但也不能过度使用Lambda,需要区分应用场景,与面向对象编程结合使用。
总之,Lambda表达式让Java语言表达能力更强,编程风格更灵活,对于集合、流、事件驱动等编程场景都很有用。但还是要适度使用,与面向对象编程结合,发挥它的优势。