Lambda表达式详细使用方法
文章目录
1.使用场景
如果匿名内部类是一个接口,并且当中只有一个抽象方法需要重写,可以使用Lambda表达式。
2.Lambda表达式格式
(参考列表) -> {代码}
先写匿名内部类,然后通过alt+回车进行修改
3.在IDEA中lambda与匿名内部类的转化
lambda转成匿名内部类:
匿名内部类转成lambda:
4.例题
4.1
public void test(){ new Thread(new Runnable() { @Override public void run() { System.out.println("峰哥升仙"); } }).start(); new Thread(() ->{System.out.println("峰哥升仙");}).start(); }
4.2
public static int Feng(IntBinaryOperator binaryOperator){ int a=10; int b=20; return binaryOperator.applyAsInt(a,b); } @Test public void test1(){ int feng = Feng((left, right) -> { return left + right; }); System.out.println(feng); }
4.3
public static void Guo(IntPredicate predicate){ int arr[]={1,2,3,4,5,6}; for (int i : arr) { if(predicate.test(i)){ System.out.println(i); } } } @Test public void test2(){ Guo((int value) -> { return value%2==0; }); }
4.4
public static <R> R type(Function<String,R> stringRFunction){ String str="12345"; R apply = stringRFunction.apply(str); return apply; } @Test public void test3(){ Object type = type((String s) -> { return s; }); System.out.println(type); }
4.5
public static void forecahArr(IntConsumer intConsumer){ int arr[]={1,2,3,4,5,6,7,8,9,10}; for (int i : arr) { intConsumer.accept(i); } } @Test public void test4(){ forecahArr((int value) -> { value+=3; System.out.println(value); }); }
5.省略规则
1.参数类型可以直接省略
2.方法体只有一句代码时,大括号return和唯一一句代码的分号可以省略
3.方法只有一个参数时小括号可以省略
4.以上这些规则记不住可以省略不记