Java1.8特性:lambda表达式快速讲解
-
函数式接概念
一个接口只包含一个抽象类,那么他是函数式接口 一个接口只包含一个抽象类,那么他是函数式接口
-
函数式接口可以使用lambda表达式,例如:
public class TestLambda { public static void main(String[] args) { Like like = () -> { System.out.println("lambda"); }; like.lamda(); } } interface Like { void lamda(); } 结果为:lambdapublic class TestLambda { public static void main(String[] args) { Like like = () -> { System.out.println("lambda"); }; like.lamda(); } } interface Like { void lamda(); } 结果为:lambda
-
lambda表达式可以有参数列表
public class TestLambda { public static void main(String[] args) { Like like = (int a) -> { System.out.println("lambda"+a); }; like.lamda(6); } } interface Like { void lamda(int a); } 结果为:lambda6public class TestLambda { public static void main(String[] args) { Like like = (int a) -> { System.out.println("lambda"+a); }; like.lamda(6); } } interface Like { void lamda(int a); } 结果为:lambda6
lambda表达式有多种简化的方法,下面进行一一举例。 lambda表达式有多种简化的方法,下面进行一一举例。
-
简化1:lambda表达式可以简化掉参数类型
public class TestLambda { public static void main(String[] args) { Like like = (a) -> { System.out.println("lambda"+a); }; like.lamda(6); } } interface Like { void lamda(int a); } 结果为:lambda6public class TestLambda { public static void main(String[] args) { Like like = (a) -> { System.out.println("lambda"+a); }; like.lamda(6); } } interface Like { void lamda(int a); } 结果为:lambda6
需要注意的是,当多个参数时,想要简化掉参数类型,则参数列表内所有参数的参数类型都需简化掉,且下面介绍的简化2不能使用,必须加上小括号。 需要注意的是,当多个参数时,想要简化掉参数类型,则参数列表内所有参数的参数类型都需简化掉,且下面介绍的简化2不能使用,必须加上小括号。
-
简化2:lambda表达式可以简化掉括号
public class TestLambda { public static void main(String[] args) { Like like = a -> { System.out.println("lambda"+a); }; like.lambda(6); } } interface Like { void lambda(int a); }public class TestLambda { public static void main(String[] args) { Like like = a -> { System.out.println("lambda"+a); }; like.lambda(6); } } interface Like { void lambda(int a); }
-
简化3:lambda表达式可以简化掉大括号
public class TestLambda { public static void main(String[] args) { Like like = a -> System.out.println("lambda"+a); ; like.lambda(6); } } interface Like { void lambda(int a); }public class TestLambda { public static void main(String[] args) { Like like = a -> System.out.println("lambda"+a); ; like.lambda(6); } } interface Like { void lambda(int a); }
但这种情况仅仅适用于大括号内有一种语句的时候。 但这种情况仅仅适用于大括号内有一种语句的时候。
下一篇:
线程和协程之间的区别