java方法引用

什么是方法引用

方法引用是用来简化lambda表达式的,比lambda更加简化抽象

使用方法引用的前提

前提 : 当lambda体的实现是通过调用另外一个方法实现的,可以通过方法引用直接引用这个方法,用来简化完整的lambda表达式的结构

方法引用的要求

两种情况满足一个就可以

1.lambda的参数列表与返回值要求能够一一对应lambda体中所引用方法的参数列表与返回值
2.lambda的返回值要求与所引用方法的返回值保持对应一致【这一条两种情况也是满足一个就可以】

lambda的参数列表如果只有一个参数 : 作为调用所引用的成员方法的对象存在
lambda的参数列表如果存在多个参数 : 第一个参数作为调用所引用的成员方法的对象存在,lambda的第二个参数开始,一一对应匹配所引用方法的参数列表

方法引用的语法

对象::实例方法
类名::静态方法
类名::实例方法

方法引用使用的代码Demo

public class Class002_MethodQuote {
    //类名::实例方法
    public static void test3(){
        ///判断 : 1)lambda体的实现是通过调用另外一个方法实现的  ->√ equals  2)lambda的返回值要求与所引用方法的返回值保持对应一致,lambda的参数列表如果存在多个参数 : 第一个参数作为调用成员方法的对象存在,lambda的第二个参数开始,匹配所引用方法的参数列表 ->对
        //BiPredicate<String,String> pre = (x,y) -> x.equals(y);
        BiPredicate<String,String> pre = String::equals;
        System.out.println(pre.test(new String("nihao"),"nihao"));;
    }

    //类名::静态方法
    public static void test2(){
        //Comparator<Integer> com = (x,y) -> x-y;  //不能通过方法引用,因为-是四则运算,不是方法的调用
        //判断 : 1)lambda体的实现是通过调用另外一个方法实现的->√ compare   2)lambda的参数列表与返回值要求能够一一对应lambda体中所引用方法的参数列表与返回值 √
        //Comparator<Integer> com = (x,y) -> Integer.compare(x,y);
        Comparator<Integer> com = Integer::compare;
        System.out.println(com.compare(100,101));;
    }

    //对象::实例方法
    public static void test1(){
        List<Integer> list = List.of(1,2,3,4,5);
        //判断 : 1)lambda体的实现是通过调用另外一个方法实现的->√ println  2)lambda的参数列表与返回值要求能够一一对应lambda体中所引用方法的参数列表与返回值  √
        PrintStream ps = System.out;
        //Consumer con = i -> System.out.println(i);
        //Consumer con = i -> ps.println(i);
        Consumer con = ps::println;
        list.forEach(con);
        list.forEach(ps::println);
        list.forEach(System.out::println);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值