diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/Assert.java b/hutool-core/src/main/java/cn/hutool/core/lang/Assert.java index 217760e66..87fe42724 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/Assert.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/Assert.java @@ -2,8 +2,11 @@ package cn.hutool.core.lang; import java.util.Collection; import java.util.Map; +import java.util.function.Supplier; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.func.Func0; +import cn.hutool.core.lang.func.VoidFunc0; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; @@ -16,6 +19,23 @@ import cn.hutool.core.util.StrUtil; */ public class Assert { + /** + * 断言是否为真,如果为 {@code false} 抛出给定的异常
+ * + *
+	 * Assert.isTrue(i > 0, IllegalArgumentException::new);
+	 * 
+ * + * @param expression 布尔值 + * @param supplier 指定断言不通过时抛出的异常 + * @throws X if expression is {@code false} + */ + public static void isTrue(boolean expression, Func0 supplier) throws X { + if (false == expression) { + throw supplier.callWithRuntimeException(); + } + } + /** * 断言是否为真,如果为 {@code false} 抛出 {@code IllegalArgumentException} 异常
* diff --git a/hutool-core/src/test/java/cn/hutool/core/lang/AssertTest.java b/hutool-core/src/test/java/cn/hutool/core/lang/AssertTest.java index d7136f271..492b82532 100644 --- a/hutool-core/src/test/java/cn/hutool/core/lang/AssertTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/lang/AssertTest.java @@ -14,4 +14,16 @@ public class AssertTest { String a = null; cn.hutool.core.lang.Assert.isNull(a); } + + @Test(expected = IllegalArgumentException.class) + public void isTrueTest() { + int i = 0; + cn.hutool.core.lang.Assert.isTrue(i > 0, IllegalArgumentException::new); + } + + @Test(expected = IndexOutOfBoundsException.class) + public void isTrueTest2() { + int i = -1; + cn.hutool.core.lang.Assert.isTrue(i >= 0, IndexOutOfBoundsException::new); + } }