3-方法引用

Posted mingmingn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3-方法引用相关的知识,希望对你有一定的参考价值。

方法引用的由来

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

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-方法引用的主要内容,如果未能解决你的问题,请参考以下文章

Sleep() 方法后的代码片段没有被执行

片段中的网格视图

Android App 在片段中创建 ListView 引用时关闭

引用向量的部分片段?

片段对话框对活动的松散引用

尝试在空对象引用上调用接口方法“____”[重复]