Java基础 -> Lambda表达式(方法::引用的写法),方法引用,构造器引用,数组引用

/**
 * 功能描述:需要重写的方法的功能,在其他地方已经重写过了,就可以引用这个方法
 * 传入的参数类型和返回的类型要一致,
 * 不可能我传入int参数,你要传入参数是string,我需要返回一个int,你却返回一个string
 * (上述描述只适用于格式一二,不适用格式三)
 * 格式一:对象::实例方法
 * 格式二: 类 ::静态方法
 * 格式三: 类 ::非静态方法
 * 方法参数描述:无
 */
class Test方法引用 {
    /**
     * 功能描述:格式一:对象::实例方法  格式二: 类 ::静态方法
     * 例:现在重写compare方法功能与Integer里的compare方法一样
     * 我就可以引用Integer里的compare方法,格式Integer::compare
     * 表示我现在重写的compare方法与Integer里的compare方法一样
     * 都是传入两个int型,返回一个int型
     * 不一定需要方法名相同,只要传入的参数一样类型个数一样,返回的类型一样就可以了
     * 方法参数描述:无
     */
    @Test
    public void test2() {
        Comparator<Integer> zComparator = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return Integer.compare(o1, o2);
            }
        };
        //Lambda方式
        Comparator<Integer> kvWeigher = (o1, o2) -> Integer.compare(o1, o2);
        //引用::方式
        Comparator<Integer> integerComparator = Integer::compare;
    }

    /**
     * 功能描述:格式三: 类 ::非静态方法
     * 不同点:
     * 格式一二:
     * compare(Integer o1, Integer o2)与Integer.compare(o1, o2)
     * 格式三:不在是静态方法了,不能没有对象就调用,将一个参数作为对象调用方法
     * compare(Integer o1, Integer o2)与o1.equals(o2)
     * compare(Integer o1, Integer o2)与o1.compareto(o2)
     * 传入参数还是一样多返回类型也一样,只不过现在是用在了不同位置,不仅仅用在形参的位置
     * 方法参数描述:无
     */
    @Test
    public void test3() {
        Comparator<Integer> zComparator = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1.compareTo(o2);
            }
        };
        //Lambdab的方式
        Comparator<Integer> kvWeigher = (o1, o2) -> {
            return o1.compareTo(o2);
        };
        //引用::的方式
        Comparator<Integer> integerComparator = Integer::compareTo;
    }

    /**
     * 功能描述:构造器引用---数组引用
     * 构造器引用格式:类::new;
     * 方法参数描述:无
     */
    @Test
    public void test4() {
        //构造器引用
        //实现了Quote接口,重写的方法中去实现了一个Test1005类的对象
        Quote quote = Test1005::new;
        //下面这个与上面的一样的功能
        Quote quote1 = new Quote() {
            @Override
            public Object test() {
                return new Test1005();
            }
        };

        IntConsumer aNew2 = String[]::new;
        //调用重写的方法就创建数组
        aNew2.accept(1);
    }

    interface Quote {
        Object test();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值