Java柯里化实现(基于Java8)

  • 定义一个实现柯里化的方法:
//用于检查某个值是否存在于指定的枚举中,
private static <E,T> Function<T, Boolean> createEnumCheck(E[] enums, Function<E, T> mapper){
	return t -> Objects.nonNull(t) &&
		Arrays.stream(enums)
			.map(mapper)
			.collect(Collectors.toList())
			.contains(t);
}
//用到的包
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
  • 测试:
public static void main(String[] args) {
	//生成一个柯里化函数
	Function<Integer, Boolean> stateCheck = createEnumCheck(UserStateEnum.values(), UserStateEnum::getState);
	//可反复使用
	System.out.println(stateCheck.apply(null));
	System.out.println(stateCheck.apply(15));
	System.out.println(stateCheck.apply(20));

	System.out.println("---------------");

	//再生成一个柯里化函数
	Function<String, Boolean> businessCheck = createEnumCheck(CompanyBussinesEnum.values(), CompanyBussinesEnum::getCode);
	System.out.println(businessCheck.apply("customer"));
	System.out.println(businessCheck.apply("nothing"));
}
  • 输出:
false
false
true
---------------
true
false
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值