Java8新特性——lambda表达式
Posted zsben991126
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java8新特性——lambda表达式相关的知识,希望对你有一定的参考价值。
其实有规律,总结一下规律就行
package lambda; /* lambda表达式的使用 1.举例:()->Integer.compare(o1,o2); 2.格式: lambda形参列表(接口中的抽象方法形参列表) -> lambda体(重写抽象方法的方法体) 3.lambda表达式的使用 总结: lambda左边的形参列表的参数类型可以省略,如果lambda只有一个参数,那么()也可以省略 lambda右边的lambda体用{}包裹,如果只有一条语句,则{}可以省略。如果有返回值,必须省略return关键字 4.java里lambda表达式的本质:函数对象,就是抽象类里有一个抽象方法,lambda就被作为一个函数对象,去实现这个抽象方法 @author zsben @create 2020-01-09 17:19 */ import org.junit.Test; import java.util.Comparator; import java.util.function.Consumer; public class LambdaTest { @Test public void test1(){ //情形一: Runnable r1 = new Runnable() { @Override public void run() { System.out.println("我爱北京天安门"); } }; r1.run(); System.out.println("*****************************************"); Runnable r2 = () -> { System.out.println("我爱北京故宫"); }; r2.run(); } @Test public void test2(){ //情形二:lambda需要一个参数,但是没有返回值 Consumer<String> con1 = new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } }; con1.accept("lambda2"); Consumer<String> con2 = s -> { System.out.println(s); }; con2.accept("lambda"); } @Test public void test3(){ //情形三:数据类型可以省略,由编译器"类型推断"得出 Consumer<String> con1 = (String s) -> { System.out.println(s); }; con1.accept("lambda3"); System.out.println("**************************************"); Consumer<String> con2 = (s) -> { System.out.println(s); }; con2.accept("lambda3"); } @Test public void test4(){ //语法格式四:lambda若只有一个参数,参数的小括号可以省略 Consumer<String> con1 = (String s) -> { System.out.println(s); }; con1.accept("lambda4"); System.out.println("**************************************"); Consumer<String> con2 = (s) -> System.out.println(s); con2.accept("lambda4"); } @Test public void test5(){ //语法格式五:lambda需要两个或以上的参数,多条执行语句,并且可以有返回值 Comparator<Integer> com1 = new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { System.out.println(o1); System.out.println(o2); return o1.compareTo(o2); } }; System.out.println(com1.compare(1, 2)); System.out.println("****************************************"); Comparator<Integer> com2 = (o1,o2)->{ System.out.println(o1); System.out.println(o2); return o1.compareTo(o2); }; System.out.println(com2.compare(1,2)); } @Test public void test7(){ //语法格式六:lambda体只有一条语句时,可以省略{},如果有返回值,必须省略return Comparator<Integer> com1 = new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o1.compareTo(o2); } }; System.out.println(com1.compare(1, 2)); System.out.println("****************************************"); Comparator<Integer> com2 = (o1,o2) -> o1.compareTo(o2); System.out.println(com2.compare(1,2)); } }
以上是关于Java8新特性——lambda表达式的主要内容,如果未能解决你的问题,请参考以下文章