码迷,mamicode.com
首页 > 其他好文 > 详细

3-方法引用

时间:2020-06-07 21:41:17      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:boolean   col   对象   访问   optional   ref   else   new   script   

方法引用的由来

使用方法引用代表判断逻辑.

public class Sku{
      
    public Boolean comparePrice(){
        return this.skuPrice > 1000;
    }
}
List<Sku> result = CartService.filterSkus(
            cartSkuList,
            Sku::comparePrice);

方法引用的作用

方法引用式作用是用来直ii接访问类或实例已经存在的方法活着构造方法.

方法引用类型

方法引用类型 表达形式
指向静态方法 Class::staticMethod
指向现有方法的实例方法 object::instanceMethod
指向任意类型的实例方法 Class::instanceMethod
指向构造方法 Class::new
package com.mingm.lambda.methodReference;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

/**
 * @description: 方法引用测试
 */
public class MrthodReferenceTest {

    static class Sku{
        private String skuName;
        private Integer skuPrcie;

        public Integer getSkuPrcie() {
            return skuPrcie;
        }

        public static int staticComaparePrice(Sku sku1, Sku sku2) {
            return sku1.getSkuPrcie() - sku2.getSkuPrcie();
        }

        public int instanceComparePrice(Sku sku) {
            return this.getSkuPrcie() - sku.getSkuPrcie();
        }
    }

    class PriceComparator{
        public int instanceComparePrice(Sku sku1, Sku sku2){
            return sku1.getSkuPrcie() - sku2.getSkuPrcie();
        }
    }

    public void test(){
        List<Sku> skuList = new ArrayList<>();
        skuList.sort((sku1, sku2) ->
            sku1.getSkuPrcie() - sku2.getSkuPrcie());

        //类名::静态方法名
        skuList.sort(Sku::staticComaparePrice);
        //展开
        skuList.sort((sku1, sku2) ->{
            return Sku.staticComaparePrice(sku1, sku2);
        });

        PriceComparator priceComparator = new PriceComparator();
        //对象::方法实例名
        skuList.sort(priceComparator::instanceComparePrice);
        //展开
        skuList.sort((Sku sku1, Sku sku2) ->{
                return priceComparator.instanceComparePrice(sku1, sku2);
            }
        );

        //类名::实例方法名
        skuList.sort(Sku::instanceComparePrice);
        //展开
        skuList.sort((Sku obj, Sku sku) ->{
            return obj.instanceComparePrice(sku);
        });

        //构造方法
        Optional.ofNullable(skuList).orElseGet(ArrayList::new);
    }
}

 

3-方法引用

标签:boolean   col   对象   访问   optional   ref   else   new   script   

原文地址:https://www.cnblogs.com/mingmingn/p/13061840.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!