通过java8函数式接口简化if-else代码

一、简化通过if-else判断异常

1、定义一个抛出异常信息接口

public interface ThrowExceptionFunction {
    /**
     * 抛出异常信息
     *
     * @param message 异常信息
     * @return void
     **/
    void throwMessage(String message);
}

2、定义一个工具类BranchUtils调用接口

public class BranchUtils {
    /**
     *  如果参数为true抛出异常
     **/
    public static ThrowExceptionFunction success(boolean b){

        return (errorMessage) -> {
            if (!b){
                throw new RuntimeException(errorMessage);
            }
        };
    }
}

3、测试效果

    @Test
    void handleException()
    {
        //false:抛出异常,true:正常
        BranchUtils.success(true).throwMessage("抛出异常");
    }

二:简化通过if-else判断分支(利用Runnable接口,无参数无返回值)

1、定义一个分支接口

public interface BranchHandle {
    /**
     * 分支操作
     *
     * @param trueHandle 为true时要进行的操作
     * @param falseHandle 为false时要进行的操作
     * @return void
     **/
    void trueOrFalseHandle(Runnable trueHandle, Runnable falseHandle);
}

2、工具类BranchUtils调用接口

public class BranchUtils {
    /**
     *  如果参数为true抛出异常
     **/
    public static ThrowExceptionFunction success(boolean b){

        return (errorMessage) -> {
            if (!b){
                throw new RuntimeException(errorMessage);
            }
        };
    }

    /**
     * 参数为true或false时,分别进行不同的操作
     * @param b
     **/
    public static BranchHandle isSuccessOrFail(boolean b){

        return (success, fail) -> {
            if (b){
                success.run();
            } else {
                fail.run();
            }
        };
    }   
}

3、测试效果

@Test
    void handleBranch()
    {
        //true,执行前段,false,执行后段
        BranchUtils.isSuccessOrFail(true).trueOrFalseHandle(()-> System.out.println("true,成功执行"),()-> System.out.println("false,失败执行"));
    }

三:

1、创建一个名为PresentOrElseHandler的函数式接口,接口的参数一个为Consumer接口。一个为Runnable,分别代表值不为空时执行消费操作和值为空时执行的其他操作。

public interface PresentOrElseHandler<T extends  Object> {
    /**
     *
     * @param action 值不为空时,执行的消费操作
     * @param emptyAction 值为空时,执行的操作
     * @return void
     **/
    void presentOrElseHandle(Consumer<? super T> action, Runnable emptyAction);
}

2、工具类BranchUtils调用接口

public class BranchUtils {
    /**
     *  如果参数为true抛出异常
     **/
    public static ThrowExceptionFunction success(boolean b){

        return (errorMessage) -> {
            if (!b){
                throw new RuntimeException(errorMessage);
            }
        };
    }

    /**
     * 参数为true或false时,分别进行不同的操作
     * @param b
     **/
    public static BranchHandle isSuccessOrFail(boolean b){

        return (success, fail) -> {
            if (b){
                success.run();
            } else {
                fail.run();
            }
        };
    }

    /**
     * 判断字符串是否为空
     **/
    public static PresentOrElseHandler<?> isBlankOrNoBlank(String str){

        return (consumer, runnable) -> {
            if (str == null || str.length() == 0){
                runnable.run();
            } else {
                consumer.accept(str);
            }
        };
    }
}

3、测试

 @Test
    void handleString()
    {
        //根据字符串是否为空执行相应操作
        BranchUtils.isBlankOrNoBlank("你好").presentOrElseHandle((Consumer<Object>) o -> System.out.println((String) o), () -> System.out.println("空字符串"));
    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值