标签: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); } }
标签:boolean col 对象 访问 optional ref else new script
原文地址:https://www.cnblogs.com/mingmingn/p/13061840.html