java8 Function 函数式接口的妙用
2021/11/29 17:36:22
本文主要是介绍java8 Function 函数式接口的妙用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Function 函数式接口
使用注解@FunctionalInterface标识,并且只包含一个抽象方法的接口是函数式接口。函数式接口主要分为:
- Supplier供给型函数:Supplier的表现形式为不接受参数、只返回数据。
- Consumer消费型函数:Consumer接收一个参数,没有返回值。
- Runnable无参无返回型函数:Runnable的表现形式为即没有参数也没有返回值。
- Function有参有返回型函数:Function函数的表现形式为接收一个参数,并返回一个值。
1、处理业务异常
示例:
public void isTrue(String msg){ // 业务处理... boolean conditon; if(conditon){ throw new RuntimeException(msg); } }
Function函数式编程:
FuncUtil.isTure(conditon).throwMessage("测试异常");
第一步:定义一个抛出异常的函数式接口, 消费型接口:只有参数没有返回值
@FunctionalInterface public interface ThrowExceptionFunction { /** * 抛出异常信息 * * @param message 异常信息 **/ void throwMessage(String message); }
第二步:定义一个工具类 FuncUtil.isTure(boolean b)
/** * 处理抛出异常 */ public static ThrowExceptionFunction isTure(boolean b) { return (errorMessage) -> { if (b) { throw new RuntimeException(errorMessage); } }; }
2、处理if...else...分支操作
示例:
public void isTureOrFalse(){ // 业务处理... boolean a; if(a){ System.out.println("true 逻辑"); } else { System.out.println("false 逻辑"); } }
Function函数式编程:
FuncUtil.isTureOrFalse(true) .trueOrFalseHandle(() -> System.out.println("true 逻辑"), () -> System.out.println("false 逻辑"));
第一步:定义一个分支处理函数式接口,接口的参数为两个Runnable接口。这两个两个Runnable接口分别代表了为true或false时要进行的操作
@FunctionalInterface public interface BranchFunction { /** * 分支操作 * * @param trueHandle 为true时要进行的操作 * @param falseHandle 为false时要进行的操作 **/ void trueOrFalseHandle(Runnable trueHandle, Runnable falseHandle); }
第二步:定义一个工具类 FuncUtil.isTureOrFalse(boolean b)
/** * 参数为true或false时,分别进行不同的操作 */ public static BranchFunction isTureOrFalse(boolean b) { return (trueHandle, falseHandle) -> { if (b) { trueHandle.run(); } else { falseHandle.run(); } }; }
3、处理if...else...分支操作,并消费输入参数
示例:
public void isBlankOrNoBlank(String msg){ if(null==msg || ''==msg){ System.out.println("msg为空"); } else { System.out.println("msg is:"+msg); } }
Function函数式编程:
FuncUtil.isBlankOrNoBlank("test") .presentHandle(System.out::println, ()-> System.out.println("空字符串"));
第一步:定义一个PresentFunction的函数式接口,接口的参数一个为Consumer接口。一个为Runnable,分别代表值不为空时执行消费操作和值为空时执行的其他操作
public interface PresentFunction<T extends Object> { /** * 值不为空时执行消费操作 * 值为空时执行其他的操作 * * @param action 值不为空时,执行的消费操作 * @param emptyAction 值为空时,执行的操作 **/ void presentHandle(Consumer<? super T> action, Runnable emptyAction); }
第二步:定义一个工具类 FuncUtil.isTureOrFalse(boolean b)
/** * 参数为true或false时,分别进行不同的操作 */ public static PresentFunction<?> isBlankOrNoBlank(String str) { return (consumer, runnable) -> { if (str == null || str.length() == 0) { runnable.run(); } else { consumer.accept(str); } }; }
这篇关于java8 Function 函数式接口的妙用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?