最无用的工具类封装——Equals条件封装 2

博客探讨了作者扩展昨天的EqualsUtils工具类,创建了IfUtils,旨在简化if语句,但经过测试对比后,发现该工具类实际效果不佳,几乎无用。文章以幽默的方式表达了这一发现。
摘要由CSDN通过智能技术生成
最无用的工具类封装——Equals条件封装 2

昨天出了一篇最无用的工具类封装 EqualsUtils
出这个工具类的目的是为了解决书写 if 语句比较多的时候造成的错误,结果搞出个什么鬼
今天我针对昨天的 EqualsUtils 做了扩展,并使用了一个新名字——IfUtils

社会我 T 哥,人狠话不多,上代码
package cn.texous.test.demo.commons.utils;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.function.Supplier;

import static cn.texous.test.demo.commons.utils.IfUtils.Condition.equalsCondition;
import static cn.texous.test.demo.commons.utils.IfUtils.Condition.newCondition;
import static cn.texous.test.demo.commons.utils.IfUtils.Condition.notEqualsCondition;

/**
 * if 条件构造工具类
 *
 * @author Showa.L
 * @since 2020/7/16 9:58
 */
public class IfUtils {
   

    /**
     * 判断连个对象是否 equals
     *
     * @param source 原对象
     * @param target 目标对象
     * @return
     */
    public static boolean equals(Object source, Object target) {
   
        if (source == target)
            return true;
        return Optional.ofNullable(source).map(s -> s.equals(target)).orElse(false);
    }

    /**
     * 判断连个对象是否 equals
     *
     * @param sourceSupplier 原对象提供者
     * @param targetSupplier 目标对象提供者
     * @return
     */
    public static boolean equals(Supplier<Object> sourceSupplier, Supplier<Object> targetSupplier) {
   
        return equals(sourceSupplier.get(), targetSupplier.get());
    }

    /**
     * 判断连个对象是否 notEquals
     *
     * @param source 原对象
     * @param target 目标对象
     * @return
     */
    public static boolean notEquals(Object source, Object target) {
   
        return !equals(source, target);
    }

    /**
     * 判断连个对象是否 notEquals
     *
     * @param sourceSupplier 原对象提供者
     * @param targetSupplier 目标对象提供者
     * @return
     */
    public static boolean notEquals(Supplier<Object> sourceSupplier, Supplier<Object> targetSupplier) {
   
        return notEquals(sourceSupplier.get(), targetSupplier.get());
    }

    /**
     * 判断对象是否为 true
     *
     * @param source 类型
     * @return
     */
    public static boolean isTrue(Boolean source) {
   
        return Optional.ofNullable(source).orElse(false);
    }

    /**
     * 判断对象是否为 false
     *
     * @param source 类型
     * @return
     */
    public static boolean isFalse(Boolean source) {
   
        return !isTrue(source);
    }

    /**
     * 构建对象关系
     *
     * @param condition 对象条件 {@link Condition}
     * @return
     */
    public static Relation build(Supplier<Boolean> condition) {
   
        return Relation.build(condition);
    }

    /**
     * 校验判断
     *
     * @param relation 条件语句
     * @return
     */
    public static Boolean validate(Relation relation) {
   
        return relation.validate();
    }

    /**
     * 校验成功后处理
     *
     * @param relation    校验条件
     * @param doSomething 处理方法
     */
    public static void validateThen(Relation relation, Consumer<Boolean> doSomething) {
   
        Optional.ofNullable(relation).map(Relation::validate).filter(IfUtils::isTrue).ifPresent(doSomething);
    }

    /**
     * 需要进行对比的对象,及对比条件
     *
     * @param <S> 对象1
     * @param <T> 对象2
     */
    @Data
    public static class Condition<S, T> implements Supplier<Boolean> {
   
        private S source;
        private T target;
        private List<CompareInfo<S, T>> compares = new ArrayList<>();

        private Condition(S source, T target, BiFunction<S, T, Boolean> compare) {
   
            this.source = source;
            this
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值