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