使用注解@FunctionalInterface标识,并且只包含一个抽象方法的接口是函数式接口。函数式接口主要分为:
示例:
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); } }; }
示例:
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(); } }; }
示例:
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); } }; }