在项目中统一断言,简化if判断,为此封装一个类似junit的断言工具类。
import com.lenton.inner.common.exception.ErrorCode;import org.apache.commons.lang3.StringUtils;import java.util.Collection;import java.util.Map;import java.util.Objects;import java.util.function.Predicate;/*** 断言,断言不通过抛出异常* <p> 校验检查工具类 </p>** @author mori* @date 2021/07/27*/public final class Assert {/*** 断言这个 boolean 为 true* <p>为 false 则抛出异常</p>** @param expression boolean 值* @param errorCode 错误代码* @param params 消息参数*/public static void assertTrue(boolean expression, ErrorCode errorCode, Object... params) {if (!expression) {throw ExceptionUtils.errorCodeException(errorCode,params);}}/*** 断言这个 boolean 为 false* <p>为 true 则抛出异常</p>** @param expression boolean 值* @param errorCode 错误代码* @param params 消息参数*/public static void assertFalse(boolean expression,ErrorCode errorCode, Object... params) {assertTrue(!expression, errorCode, params);}/*** 断言这个 expression 为 true* <p>为 false 则抛出异常</p>** @param expression 断言函数* @param entity 断言对象* @param errorCode 错误代码* @param params 消息参数*/public static <T> void assertTrue(Predicate<T> expression, T entity, ErrorCode errorCode, Object... params) {assertTrue(expression.test(entity), errorCode, params);}/*** 断言这个字符串不是空白* <p>为空白字符串 则抛出异常</p>** @param str str* @param errorCode 错误代码* @param params 消息参数*/public static void assertNotBlank(String str, ErrorCode errorCode, Object... params) {assertTrue(StringUtils::isNotBlank, str, errorCode, params);}/*** 断言这个Object为null* <p>不为null 则抛出异常</p>** @param object 对象* @param errorCode 错误代码* @param params 消息参数*/public static void assertNull(Object object, ErrorCode errorCode, Object... params) {assertTrue(Objects::isNull, object, errorCode, params);}/*** 断言这个Object不为null* <p>为null 则抛出异常</p>*** @param object 对象* @param errorCode 错误代码* @param params 消息参数*/public static void assertNotNull(Object object, ErrorCode errorCode, Object... params) {assertTrue(Objects::nonNull, object, errorCode, params);}/*** 断言这个集合不是empty* <p>为empty 则抛出异常</p>** @param collection 集合* @param errorCode 错误代码* @param params 消息参数*/public static void assertNotEmpty(Collection<?> collection, ErrorCode errorCode, Object... params) {assertTrue(CollectionUtils.isNotEmpty(collection), errorCode, params);}/*** 断言这个集合是empty* <p>不为empty 则抛出异常</p>** @param collection 集合* @param errorCode 错误代码* @param params 消息参数*/public static void assertEmpty(Collection<?> collection, ErrorCode errorCode, Object... params) {assertTrue(CollectionUtils.isEmpty(collection), errorCode, params);}/*** 断言这个 map 不为 empty* <p>为 empty 则抛异常</p>** @param map 集合* @param errorCode 错误代码* @param params 消息参数*/public static void assertNotEmpty(Map<?, ?> map, ErrorCode errorCode, Object... params) {assertTrue(CollectionUtils.isNotEmpty(map), errorCode, params);}/*** 断言这个 map 为 empty* <p>不为 empty 则抛异常</p>** @param map 集合* @param errorCode 错误代码* @param params 消息参数*/public static void assertEmpty(Map<?, ?> map, ErrorCode errorCode, Object... params) {assertTrue(CollectionUtils.isEmpty(map), errorCode, params);}/*** 断言这个 数组 不为 empty* <p>为 empty 则抛异常</p>** @param array 数组* @param errorCode 错误代码* @param params 消息参数*/public static void assertNotEmpty(Object[] array,ErrorCode errorCode, Object... params) {assertTrue(ArrayUtils.isNotEmpty(array), errorCode, params);}/*** 断言两个对象相等* <p>不相等 则抛出异常</p>** @param object 对象1* @param other 对象2* @param errorCode 错误代码* @param params 消息参数*/public static void assertEquals(Object object, Object other, ErrorCode errorCode, Object... params) {assertTrue(Objects.equals(object, other), errorCode, params);}/*** 断言两个对象不相等* <p>相等 则抛出异常</p>** @param object 对象1* @param other 对象2* @param errorCode 错误代码* @param params 消息参数*/public static void assertNotEquals(Object object, Object other, ErrorCode errorCode, Object... params) {assertTrue(!Objects.equals(object, other), errorCode, params);}}
