最终返回的数据类型
- * @return cn.hutool.core.lang.func.Func1
+ * @return {@link Func1Rt}
*/
public static Func1Rt
uncheck(Func1
expression) {
return uncheck(expression, new RuntimeException());
@@ -89,7 +89,7 @@ public class CheckedUtil {
*
* @param expression 运行时传入的参数类型
* @param
运行时传入的参数类型
- * @return cn.hutool.core.lang.func.VoidFunc
+ * @return {@link VoidFuncRt}
*/
public static
VoidFuncRt
uncheck(VoidFunc
expression) {
return uncheck(expression, new RuntimeException());
@@ -100,7 +100,7 @@ public class CheckedUtil {
* 如此一来,代码中就不用显示的try-catch转化成运行时异常
*
* @param expression 运行时传入的参数类型
- * @return cn.hutool.core.lang.func.VoidFunc0
+ * @return {@link VoidFunc0Rt}
*/
public static VoidFunc0Rt uncheck(VoidFunc0 expression) {
return uncheck(expression, new RuntimeException());
@@ -112,7 +112,7 @@ public class CheckedUtil {
*
* @param expression 运行时传入的参数类型
* @param
运行时传入的参数类型
- * @return cn.hutool.core.lang.func.VoidFunc1
+ * @return {@link VoidFunc1Rt}
*/
public static
VoidFunc1Rt
uncheck(VoidFunc1
expression) {
return uncheck(expression, new RuntimeException());
@@ -127,7 +127,7 @@ public class CheckedUtil {
* @param rte 期望抛出的运行时异常
* @param
运行时传入的参数类型
* @param 最终返回的数据类型
- * @return cn.hutool.core.lang.func.Func
+ * @return {@link FuncRt}
*/
public static FuncRt
uncheck(Func
expression, RuntimeException rte) {
Objects.requireNonNull(expression, "expression can not be null");
@@ -152,7 +152,7 @@ public class CheckedUtil {
* @param expression Lambda表达式
* @param rte 期望抛出的运行时异常
* @param 最终返回的数据类型
- * @return cn.hutool.core.lang.func.Func0
+ * @return {@link Func0Rt}
*/
public static Func0Rt uncheck(Func0 expression, RuntimeException rte) {
Objects.requireNonNull(expression, "expression can not be null");
@@ -178,7 +178,7 @@ public class CheckedUtil {
* @param rte 期望抛出的运行时异常
* @param 运行时传入的参数类型
* @param 最终返回的数据类型
- * @return cn.hutool.core.lang.func.Func1
+ * @return {@link Func1Rt}
*/
public static Func1Rt
uncheck(Func1
expression, RuntimeException rte) {
Objects.requireNonNull(expression, "expression can not be null");
@@ -203,7 +203,7 @@ public class CheckedUtil {
* @param expression Lambda表达式
* @param rte 期望抛出的运行时异常
* @param
运行时传入的参数类型
- * @return cn.hutool.core.lang.func.VoidFunc
+ * @return {@link VoidFuncRt}
*/
public static
VoidFuncRt
uncheck(VoidFunc
expression, RuntimeException rte) {
Objects.requireNonNull(expression, "expression can not be null");
@@ -228,7 +228,7 @@ public class CheckedUtil {
*
* @param expression Lambda表达式
* @param rte 期望抛出的运行时异常
- * @return cn.hutool.core.lang.func.VoidFunc0
+ * @return {@link VoidFunc0Rt}
*/
public static VoidFunc0Rt uncheck(VoidFunc0 expression, RuntimeException rte) {
Objects.requireNonNull(expression, "expression can not be null");
@@ -254,7 +254,7 @@ public class CheckedUtil {
* @param expression Lambda表达式
* @param rte 期望抛出的运行时异常
* @param
运行时传入的参数类型
- * @return cn.hutool.core.lang.func.VoidFunc1
+ * @return {@link VoidFunc1Rt}
*/
public static
VoidFunc1Rt
uncheck(VoidFunc1
expression, RuntimeException rte) {
Objects.requireNonNull(expression, "expression can not be null");
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer1.java b/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer1.java
new file mode 100755
index 000000000..12d4b3893
--- /dev/null
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer1.java
@@ -0,0 +1,32 @@
+package cn.hutool.core.lang.func;
+
+import java.util.function.Consumer;
+
+/**
+ * 1参数Consumer
+ *
+ * @param 目标类型
+ * @param 参数一类型
+ * @author TomXin
+ * @since 5.7.21
+ */
+@FunctionalInterface
+public interface Consumer1 {
+ /**
+ * 接收参数方法
+ *
+ * @param t 对象
+ * @param p1 参数1
+ */
+ void accept(T t, P1 p1);
+
+ /**
+ * 将带有参数的Consumer转换为无参{@link Consumer}
+ *
+ * @param p1 参数1
+ * @return {@link Consumer}
+ */
+ default Consumer toConsumer(P1 p1) {
+ return instant -> accept(instant, p1);
+ }
+}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer2.java b/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer2.java
new file mode 100755
index 000000000..82c1ea43f
--- /dev/null
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer2.java
@@ -0,0 +1,36 @@
+package cn.hutool.core.lang.func;
+
+import java.util.function.Consumer;
+
+/**
+ * 2参数Consumer
+ *
+ * @param 目标类型
+ * @param 参数一类型
+ * @param 参数二类型
+ * @author TomXin
+ * @since 5.7.21
+ */
+@FunctionalInterface
+public interface Consumer2 {
+
+ /**
+ * 接收参数方法
+ *
+ * @param t 对象
+ * @param p1 参数一
+ * @param p2 参数二
+ */
+ void accept(T t, P1 p1, P2 p2);
+
+ /**
+ * 将带有参数的Consumer转换为无参{@link Consumer}
+ *
+ * @param p1 参数1
+ * @param p2 参数2
+ * @return {@link Consumer}
+ */
+ default Consumer toConsumer(P1 p1, P2 p2) {
+ return instant -> accept(instant, p1, p2);
+ }
+}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer3.java b/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer3.java
new file mode 100755
index 000000000..2f5b2eb57
--- /dev/null
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer3.java
@@ -0,0 +1,38 @@
+package cn.hutool.core.lang.func;
+
+import java.util.function.Consumer;
+
+/**
+ * 3参数Consumer
+ *
+ * @param 目标类型
+ * @param 参数一类型
+ * @param 参数二类型
+ * @param 参数三类型
+ * @author TomXin
+ * @since 5.7.21
+ */
+@FunctionalInterface
+public interface Consumer3 {
+ /**
+ * 接收参数方法
+ *
+ * @param t 对象
+ * @param p1 参数一
+ * @param p2 参数二
+ * @param p3 参数三
+ */
+ void accept(T t, P1 p1, P2 p2, P3 p3);
+
+ /**
+ * 将带有参数的Consumer转换为无参{@link Consumer}
+ *
+ * @param p1 参数1
+ * @param p2 参数2
+ * @param p3 参数3
+ * @return {@link Consumer}
+ */
+ default Consumer toConsumer(P1 p1, P2 p2, P3 p3) {
+ return instant -> accept(instant, p1, p2, p3);
+ }
+}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer4.java b/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer4.java
new file mode 100755
index 000000000..59cd66c1e
--- /dev/null
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer4.java
@@ -0,0 +1,41 @@
+package cn.hutool.core.lang.func;
+
+import java.util.function.Consumer;
+
+/**
+ * 4参数Consumer
+ *
+ * @param 目标类型
+ * @param 参数一类型
+ * @param 参数二类型
+ * @param 参数三类型
+ * @param 参数四类型
+ * @author TomXin
+ * @since 5.7.21
+ */
+@FunctionalInterface
+public interface Consumer4 {
+ /**
+ * 接收参数方法
+ *
+ * @param t 对象
+ * @param p1 参数一
+ * @param p2 参数二
+ * @param p3 参数三
+ * @param p4 参数四
+ */
+ void accept(T t, P1 p1, P2 p2, P3 p3, P4 p4);
+
+ /**
+ * 将带有参数的Consumer转换为无参{@link Consumer}
+ *
+ * @param p1 参数1
+ * @param p2 参数2
+ * @param p3 参数3
+ * @param p4 参数4
+ * @return {@link Consumer}
+ */
+ default Consumer toConsumer(P1 p1, P2 p2, P3 p3, P4 p4) {
+ return instant -> accept(instant, p1, p2, p3, p4);
+ }
+}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer5.java b/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer5.java
new file mode 100755
index 000000000..be18f3e1f
--- /dev/null
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer5.java
@@ -0,0 +1,44 @@
+package cn.hutool.core.lang.func;
+
+import java.util.function.Consumer;
+
+/**
+ * 5参数Consumer
+ *
+ * @param 目标 类型
+ * @param 参数一 类型
+ * @param 参数二 类型
+ * @param 参数三 类型
+ * @param 参数四 类型
+ * @param 参数五 类型
+ * @author TomXin
+ * @since 5.7.21
+ */
+@FunctionalInterface
+public interface Consumer5 {
+ /**
+ * 接收参数方法
+ *
+ * @param t 对象
+ * @param p1 参数一
+ * @param p2 参数二
+ * @param p3 参数三
+ * @param p4 参数四
+ * @param p5 参数五
+ */
+ void accept(T t, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5);
+
+ /**
+ * 将带有参数的Consumer转换为无参{@link Consumer}
+ *
+ * @param p1 参数1
+ * @param p2 参数2
+ * @param p3 参数3
+ * @param p4 参数4
+ * @param p5 参数5
+ * @return {@link Consumer}
+ */
+ default Consumer toConsumer(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) {
+ return instant -> accept(instant, p1, p2, p3, p4, p5);
+ }
+}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/func/Supplier1.java b/hutool-core/src/main/java/cn/hutool/core/lang/func/Supplier1.java
new file mode 100755
index 000000000..376c91a2a
--- /dev/null
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/func/Supplier1.java
@@ -0,0 +1,32 @@
+package cn.hutool.core.lang.func;
+
+import java.util.function.Supplier;
+
+/**
+ * 1参数Supplier
+ *
+ * @param 目标 类型
+ * @param 参数一 类型
+ * @author TomXin
+ * @since 5.7.21
+ */
+@FunctionalInterface
+public interface Supplier1 {
+ /**
+ * 生成实例的方法
+ *
+ * @param p1 参数一
+ * @return 目标对象
+ */
+ T get(P1 p1);
+
+ /**
+ * 将带有参数的Supplier转换为无参{@link Supplier}
+ *
+ * @param p1 参数1
+ * @return {@link Supplier}
+ */
+ default Supplier toSupplier(P1 p1) {
+ return () -> get(p1);
+ }
+}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/func/Supplier2.java b/hutool-core/src/main/java/cn/hutool/core/lang/func/Supplier2.java
new file mode 100755
index 000000000..6d5e9ce80
--- /dev/null
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/func/Supplier2.java
@@ -0,0 +1,36 @@
+package cn.hutool.core.lang.func;
+
+import java.util.function.Supplier;
+
+/**
+ * 两个参数的Supplier
+ *
+ * @param 目标 类型
+ * @param 参数一 类型
+ * @param 参数二 类型
+ * @author TomXin
+ * @since 5.7.21
+ */
+@FunctionalInterface
+public interface Supplier2 {
+
+ /**
+ * 生成实例的方法
+ *
+ * @param p1 参数一
+ * @param p2 参数二
+ * @return 目标对象
+ */
+ T get(P1 p1, P2 p2);
+
+ /**
+ * 将带有参数的Supplier转换为无参{@link Supplier}
+ *
+ * @param p1 参数1
+ * @param p2 参数2
+ * @return {@link Supplier}
+ */
+ default Supplier toSupplier(P1 p1, P2 p2) {
+ return () -> get(p1, p2);
+ }
+}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/func/Supplier3.java b/hutool-core/src/main/java/cn/hutool/core/lang/func/Supplier3.java
new file mode 100755
index 000000000..50324e55b
--- /dev/null
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/func/Supplier3.java
@@ -0,0 +1,39 @@
+package cn.hutool.core.lang.func;
+
+import java.util.function.Supplier;
+
+/**
+ * 3参数Supplier
+ *
+ * @param 目标类型
+ * @param 参数一类型
+ * @param 参数二类型
+ * @param 参数三类型
+ * @author TomXin
+ * @since 5.7.21
+ */
+@FunctionalInterface
+public interface Supplier3 {
+
+ /**
+ * 生成实例的方法
+ *
+ * @param p1 参数一
+ * @param p2 参数二
+ * @param p3 参数三
+ * @return 目标对象
+ */
+ T get(P1 p1, P2 p2, P3 p3);
+
+ /**
+ * 将带有参数的Supplier转换为无参{@link Supplier}
+ *
+ * @param p1 参数1
+ * @param p2 参数2
+ * @param p3 参数3
+ * @return {@link Supplier}
+ */
+ default Supplier toSupplier(P1 p1, P2 p2, P3 p3) {
+ return () -> get(p1, p2, p3);
+ }
+}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/func/Supplier4.java b/hutool-core/src/main/java/cn/hutool/core/lang/func/Supplier4.java
new file mode 100755
index 000000000..c715b8693
--- /dev/null
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/func/Supplier4.java
@@ -0,0 +1,42 @@
+package cn.hutool.core.lang.func;
+
+import java.util.function.Supplier;
+
+/**
+ * 4参数Supplier
+ *
+ * @param 目标 类型
+ * @param 参数一 类型
+ * @param 参数二 类型
+ * @param 参数三 类型
+ * @param 参数四 类型
+ * @author TomXin
+ * @since 5.7.21
+ */
+@FunctionalInterface
+public interface Supplier4 {
+
+ /**
+ * 生成实例的方法
+ *
+ * @param p1 参数一
+ * @param p2 参数二
+ * @param p3 参数三
+ * @param p4 参数四
+ * @return 目标对象
+ */
+ T get(P1 p1, P2 p2, P3 p3, P4 p4);
+
+ /**
+ * 将带有参数的Supplier转换为无参{@link Supplier}
+ *
+ * @param p1 参数1
+ * @param p2 参数2
+ * @param p3 参数3
+ * @param p4 参数4
+ * @return {@link Supplier}
+ */
+ default Supplier toSupplier(P1 p1, P2 p2, P3 p3, P4 p4) {
+ return () -> get(p1, p2, p3, p4);
+ }
+}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/func/Supplier5.java b/hutool-core/src/main/java/cn/hutool/core/lang/func/Supplier5.java
new file mode 100755
index 000000000..121a2ce9c
--- /dev/null
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/func/Supplier5.java
@@ -0,0 +1,45 @@
+package cn.hutool.core.lang.func;
+
+import java.util.function.Supplier;
+
+/**
+ * 5参数Supplier
+ *
+ * @param 目标 类型
+ * @param 参数一 类型
+ * @param 参数二 类型
+ * @param 参数三 类型
+ * @param 参数四 类型
+ * @param 参数五 类型
+ * @author TomXin
+ * @since 5.7.21
+ */
+@FunctionalInterface
+public interface Supplier5 {
+
+ /**
+ * 生成实例的方法
+ *
+ * @param p1 参数一
+ * @param p2 参数二
+ * @param p3 参数三
+ * @param p4 参数四
+ * @param p5 参数五
+ * @return 目标对象
+ */
+ T get(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5);
+
+ /**
+ * 将带有参数的Supplier转换为无参{@link Supplier}
+ *
+ * @param p1 参数1
+ * @param p2 参数2
+ * @param p3 参数3
+ * @param p4 参数4
+ * @param p5 参数5
+ * @return {@link Supplier}
+ */
+ default Supplier toSupplier(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) {
+ return () -> get(p1, p2, p3, p4, p5);
+ }
+}
diff --git a/hutool-core/src/test/java/cn/hutool/core/builder/GenericBuilderTest.java b/hutool-core/src/test/java/cn/hutool/core/builder/GenericBuilderTest.java
index b3753e62d..f5c8c9732 100644
--- a/hutool-core/src/test/java/cn/hutool/core/builder/GenericBuilderTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/builder/GenericBuilderTest.java
@@ -2,6 +2,7 @@ package cn.hutool.core.builder;
import cn.hutool.core.util.StrUtil;
import lombok.*;
+import org.junit.Assert;
import org.junit.Test;
/**
@@ -21,7 +22,13 @@ public class GenericBuilderTest {
.with(Box::setWidth, 8)
.with(Box::setHeight, 7)
.build();
- System.out.println(box);
+
+ Assert.assertEquals(1024L, box.getId().longValue());
+ Assert.assertEquals("Hello World!", box.getTitle());
+ Assert.assertEquals(9, box.getLength().intValue());
+ Assert.assertEquals(8, box.getWidth().intValue());
+ Assert.assertEquals(7, box.getHeight().intValue());
+
Box boxModified = GenericBuilder
.of(() -> box)
.with(Box::setTitle, "Hello Friend!")
@@ -29,12 +36,23 @@ public class GenericBuilderTest {
.with(Box::setWidth, 4)
.with(Box::setHeight, 5)
.build();
- System.out.println(boxModified);
+
+ Assert.assertEquals(1024L, boxModified.getId().longValue());
+ Assert.assertEquals("Hello Friend!", box.getTitle());
+ Assert.assertEquals(3, boxModified.getLength().intValue());
+ Assert.assertEquals(4, boxModified.getWidth().intValue());
+ Assert.assertEquals(5, boxModified.getHeight().intValue());
+
Box box1 = GenericBuilder
.of(Box::new, 2048L, "Hello Partner!", 222, 333, 444)
.with(Box::alis)
.build();
- System.out.println(box1);
+
+ Assert.assertEquals(2048L, box1.getId().longValue());
+ Assert.assertEquals("Hello Partner!", box1.getTitle());
+ Assert.assertEquals(222, box1.getLength().intValue());
+ Assert.assertEquals(333, box1.getWidth().intValue());
+ Assert.assertEquals(444, box1.getHeight().intValue());
}
@Getter
diff --git a/hutool-core/src/test/java/cn/hutool/core/exceptions/CheckedUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/exceptions/CheckedUtilTest.java
index fbfe82cb2..35be0f241 100644
--- a/hutool-core/src/test/java/cn/hutool/core/exceptions/CheckedUtilTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/exceptions/CheckedUtilTest.java
@@ -21,11 +21,8 @@ public class CheckedUtilTest {
@Test
public void sleepTest() {
-
VoidFunc0 func = () -> Thread.sleep(1000L);
func.callWithRuntimeException();
-
-
}
@@ -39,7 +36,6 @@ public class CheckedUtilTest {
} catch (Exception re) {
Assert.assertTrue(re instanceof RuntimeException);
}
-
}
@SuppressWarnings("ConstantConditions")