
com.moon.core.util.condition.Conditional Maven / Gradle / Ivy
package com.moon.core.util.condition;
import com.moon.core.util.function.ThrowingRunnable;
import com.moon.core.util.function.ThrowingSupplier;
import java.util.function.BooleanSupplier;
/**
* 条件执行
*
* @author moonsky
*/
@FunctionalInterface
public interface Conditional extends BooleanSupplier {
/**
* 返回固定条件执行器
*
* @param matched 是否符合条件
*
* @return 固定条件条件执行
*/
static Conditional of(boolean matched) { return DynamicCondition.of(matched); }
/**
* 返回动态条件执行器
*
* @param dynamicCondition 动态条件
*
* @return 动态条件执行器
*/
static Conditional of(BooleanSupplier dynamicCondition) { return DynamicCondition.of(dynamicCondition); }
/**
* 返回是否符合条件
*
* @return true: 符合条件
*/
boolean isTrue();
/**
* 是否不符合条件
*
* @return true: 不符合条件
*/
default boolean isFalse() { return !isTrue(); }
/**
* 是否符合期望条件
*
* @param expected
*
* @return
*/
default boolean isTrueAnd(boolean expected) { return expected && isTrue(); }
/**
* 是否不符合期望条件
*
* @param expected
*
* @return
*/
default boolean isFalseAnd(boolean expected) { return expected && isFalse(); }
/**
* 返回是否符合条件
*
* @return true: 符合条件
*/
@Override
default boolean getAsBoolean() { return isTrue(); }
/**
* 执行
*
* @param executor 符合条件时执行
*/
default void ifTrue(ThrowingRunnable executor) {
if (isTrue()) {
executor.uncheckedRun();
}
}
/**
* 不符合条件时执行
*
* @param executor 不符合条件时执行
*/
default void ifFalse(ThrowingRunnable executor) {
if (isFalse()) {
executor.uncheckedRun();
}
}
/**
* 得到一个值,null 值或异常时返回 defaultVal
*
* @param supplier 符合条件时执行并返回结果
* @param defaultValue 不符合条件时返回默认值
* @param 返回值类型
*
* @return T 类型的值
*/
default T getOrDefault(ThrowingSupplier supplier, T defaultValue) {
return isTrue() ? supplier.uncheckedGet() : defaultValue;
}
/**
* 得到一个值,null 值或异常时返回 defaultVal
*
* @param supplier 符合条件时执行并返回结果
* @param defaultValue 不符合条件时返回默认值
* @param 返回值类型
*
* @return T 类型的值
*/
default T getIfFalseOrDefault(ThrowingSupplier supplier, T defaultValue) {
return isFalse() ? supplier.uncheckedGet() : defaultValue;
}
/**
* 得到一个值,null 值或异常时返回 defaultSupplier 的值
*
* @param supplier 符合条件时执行并返回结果
* @param defaultSupplier 不符合条件时执行降级策略
* @param 返回值类型
*
* @return T 类型的值
*/
default T getOrElse(ThrowingSupplier supplier, ThrowingSupplier defaultSupplier) {
return isTrue() ? supplier.uncheckedGet() : defaultSupplier.uncheckedGet();
}
/**
* 得到一个值,null 值或异常时返回 defaultSupplier 的值
*
* @param supplier 符合条件时执行并返回结果
* @param defaultSupplier 不符合条件时执行降级策略
* @param 返回值类型
*
* @return T 类型的值
*/
default T getIfFalseOrElse(ThrowingSupplier supplier, ThrowingSupplier defaultSupplier) {
return isFalse() ? supplier.uncheckedGet() : defaultSupplier.uncheckedGet();
}
/**
* 得到一个值,null 值或异常时返回 null
*
* @param supplier 符合条件时执行并返回结果
* @param 返回结果类型
*
* @return T 类型的值
*/
default T getOrNull(ThrowingSupplier supplier) { return getOrDefault(supplier, null); }
/**
* 得到一个值,null 值或异常时返回 null
*
* @param supplier 符合条件时执行并返回结果
* @param 返回结果类型
*
* @return T 类型的值
*/
default T getIfFalseOrNull(ThrowingSupplier supplier) { return getIfFalseOrDefault(supplier, null); }
/**
* 值转换
*
* @param trueValue 真值
* @param defaultForFalseValue 假值
* @param 数据类型
*
* @return 值
*/
default T defaultIfFalse(T trueValue, T defaultForFalseValue) {
return isTrue() ? trueValue : defaultForFalseValue;
}
/**
* 值转换
*
* @param falseValue 假值
* @param defaultForTrueValue 真值
* @param 数据类型
*
* @return 值
*/
default T defaultIfTrue(T falseValue, T defaultForTrueValue) {
return isFalse() ? falseValue : defaultForTrueValue;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy