美文网首页
方法引用、构造器引用、数组引用

方法引用、构造器引用、数组引用

作者: MrL槑槑 | 来源:发表于2018-07-11 23:18 被阅读0次
/**
 * 方法引用:若Lambda体中的内容有方法已经实现了,我们可以使用"方法引用"
 *      (可以理解为方法引用是Lambda表达式的另外一种形式)
 *
 * 主要有三种语法格式:
 *
 * 对象::实例方法名
 *
 * 类 :: 静态方法名
 *
 * 类 :: 实例方法名
 *
 * 注意:
 *      ①Lambda 体中调用方法的参数列表与返回值类型,要与函数式接口中抽象方法的函参数列表和返回值保持一致
 *      ②若Lambda 参数列表中的第一个参数是 实例方法的调用者,而第二个参数是实例方法的参数时,可以使用 ClassName :: method
 *
 *
 *
 * 构造器引用
 *
 *      格式:
 *      ClassName :: new
 *
 * 注意:需要调用的构造器的参数列表要与函数式接口中抽象方法的参数列表保持一致
 *
 *
 *
 * 数组引用:
 *      Type[]::new
 *
 */
public class TestMethodRef extends BaseTest {

    @Test
    public void test1(){
        Consumer<String> consumer = x-> System.out.println(x);

        /**
         * 条件:需要实现的抽象方法-> 参数列表和返回值类型 与 方法引入的参数列表和返回值类型  保持一致
         * void accept(T t);
         * void println(String x) {
         */
        Consumer<String> consumer1 = System.out::println;
    }

    @Test
    public void test2(){

        // 对象::实例方法名

        Employ employ = new Employ();
        Supplier<String> supplier = () -> employ.getName();

        Supplier<String> supplier1 = employ::getName;
        Supplier<Integer> supplier2 = employ::getAge;
    }

    @Test
    public void test3(){

        // 类 :: 静态方法名
        Comparator<Integer> comparator = (x,y)-> Integer.compare(x,y);
        Comparator<Integer> comparator1 = Integer::compare;
    }

    @Test
    public void test4(){

        // 类 :: 实例方法名
        BiPredicate<String,String> biPredicate = (x,y)->x.equals(y);
        BiPredicate<String,String> biPredicate2 = String::equals;

    }

    @Test
    public void test5(){

        // 构造器引用
        Supplier<Employ> supplier = ()->new Employ();
        Supplier<Employ> supplier1 = Employ::new;

        Function<Integer,Employ> function = (x)-> new Employ(x);
        Function<Integer,Employ> function1 = Employ::new;

    }

    @Test
    public void test6(){

        // 数组引入
        Function<Integer,String[]> function = (x)-> new String[x];
        Function<Integer,String[]> function1 = String[]::new;
        String[] apply = function1.apply(3);
    }

}

相关文章

网友评论

      本文标题:方法引用、构造器引用、数组引用

      本文链接:https://www.haomeiwen.com/subject/oxnkpftx.html