Lambda的简写

Lambda表达式,是匿名内部类的一种简写形式。
Lambda表达式的语法特点
1.Lambda表达式 引入了一个箭头符号 ->
2.箭头符号 -> 把Lambda表达式分成左右两部分
3.左边:写这个接口中的抽象方法的形参列表。
4.右边:你对这个接口中的抽象方法的具体的重写逻辑

定义一个接口如下:

package demo8;

public interface MyInterface {
    public abstract void show();
}

测试类如下:

package demo8;

public class Mytest {
    public static void main(String[] args) {
        new MyInterface() {
            @Override
            public void show() {
                System.out.println("show");
            }
        };

        //lambda形式:
        MyInterface MyInterface = () -> {
            System.out.println("show");
        };
    }
}

Lambda的简写

接口如下:

package demo9;

public interface MyInterface {
    public int   test(String name,int age);
}

测试类如下:

package demo9;

public class Mytest {
    public static void main(String[] args) {
        //lambda形式:
        //第一步简写
        MyInterface myInterface = (String name,int age) -> {
            return 10;
        };

        //第二步简写 形参的数据类型也可以省略不写
        MyInterface myInterface1=(name,age)->{return 10;};

        //第三次简写:如果你对接口中的抽象方法的具体实现逻辑,只有一行代码,可以省略return关键字和{}
        MyInterface myInterface2=(name,age)->10;
    }
}

函数式函数式接口:接口中只有一个抽象方法

一个函数式接口如下:

package demo10;
//可以检测这个接口是不是个函数式接口
@FunctionalInterface
public interface MyInterface {
    public abstract int show(int a);
}

测试类如下:

package demo10;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.function.Consumer;

public class Mytest {
    public static void main(String[] args) {
        //当接口中只有一个抽象方法,才能使用Lambda表达式来简写。
        //Lambda表达式之支持函数式接口:接口中只有一个抽象方法
        // @FunctionalInterface 这个注解可以检测这个接口是不是个函数式接口
       MyInterface myInterface=a-> a+100;


        Integer[] arr={20,30,2,3};
        //此处的比较器可以使用Lambda作为参数传递
        Arrays.sort(arr,(a,b)->a-b);
        System.out.println(arr);

        Consumer<Integer> consumer=integer -> System.out.println(integer);
    }
}


版权声明:本文为qq_44241861原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。