妙用Java 8中的 Function接口 消灭if...else(非常新颖的写法)

妙用Java 8中的 Function接口 消灭if…else(非常新颖的写法)

链接: 参考地址


抛异常接口

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

If , else 分支操作接口定义

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

工具类实现接口

import org.junit.platform.commons.util.StringUtils;

public class VUtils {

    /**
     * 如果参数为true抛出异常
     *
     * @param b
     * @return com.example.demo.func.ThrowExceptionFunction
     **/
    public static ThrowExceptionFunction isTure(boolean b) {

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

    /**
     * 参数为true或false时,分别进行不同的操作
     *
     * @param b
     * @return com.example.demo.func.BranchHandle
     **/
    public static BranchHandle isTrueOrFalse(boolean b) {
        return (trueHandle, falseHandle) -> {
            if (b) {
                trueHandle.run();
            } else {
                falseHandle.run();
            }
        };
    }
    
}

测试类调用

public static void main(String[] args) {

        boolean flag = true;
        
        VUtils.isTrueOrFalse(flag)
                .trueOrFalseHandle(
                        () -> {
                            System.out.println("----正常----");
                            System.out.println("接口调用成功!");

                        }, () -> {
                            VUtils.isTure(flag).throwMessage("操作失败,请联系管理员!!");
                        }
                );
    }

-自定义判断是否null值处理

接口定义

import java.util.function.Consumer;

/**
 * 空值与非空值分支处理
 */
public interface PresentOrElseHandler<T extends Object> {

    /**
     * 值不为空时执行消费操作
     * 值为空时执行其他的操作
     *
     * @param action 值不为空时,执行的消费操作
     * @param emptyAction 值为空时,执行的操作
     * @return void
     **/
    boolean presentOrElseHandle(Consumer<? super T> action, Runnable emptyAction);
}

工具类调用此方法

null值返回true,否则为false

 /**
     * 参数为true或false时,分别进行不同的操作
     *
     * @param str
     * @return com.example.demo.func.BranchHandle
     **/
    public static PresentOrElseHandler<?> isBlank(String str) {
        return (consumer, runnable) -> {
            if (StringUtils.isBlank(str)) {
                runnable.run();
                return true;
            } else {
                consumer.accept(str);
                return false;
            }
        };
    }

测试类

public static void main(String[] args) {

        boolean flag = true;

        String str = "";
        VUtils.isTrueOrFalse(VUtils.isBlank(str)
                .presentOrElseHandle(
                        System.out::println, () -> {
                            return;
                        }
                ))
                .trueOrFalseHandle(
                        () -> {
                            System.out.println("----正常----");
                            System.out.println("接口调用成功!");
                        }, () -> {
                            VUtils.isTure(flag).throwMessage("操作失败,请联系管理员!!");
                        }
                );

    }

测试结果
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值