From bac27e87dbfe63a95777056f0eef1421725a3b6d Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 16 Feb 2022 13:21:05 +0800 Subject: [PATCH] add map support --- CHANGELOG.md | 2 + .../hutool/core/builder/GenericBuilder.java | 7 ++-- .../cn/hutool/core/lang/func/Consumer2.java | 37 ------------------- .../cn/hutool/core/lang/func/Consumer3.java | 23 ++++++++++++ .../core/builder/GenericBuilderTest.java | 3 ++ .../cn/hutool/core/util/ArrayUtilTest.java | 7 ++++ .../main/java/cn/hutool/extra/ftp/Ftp.java | 11 ++++++ 7 files changed, 49 insertions(+), 41 deletions(-) delete mode 100644 hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer2.java create mode 100644 hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer3.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 998ce35a4..c9f5c110a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ ### 🐣新特性 * 【poi 】 ExcelUtil.readBySax增加对POI-5.2.0的兼容性(issue#I4TJF4@gitee) +* 【extra 】 Ftp增加构造(issue#I4TKXP@gitee) +* 【core 】 GenericBuilder支持Map构建(pr#540@Github) ### 🐞Bug修复 diff --git a/hutool-core/src/main/java/cn/hutool/core/builder/GenericBuilder.java b/hutool-core/src/main/java/cn/hutool/core/builder/GenericBuilder.java index 03c148f02..f9a6abfaa 100644 --- a/hutool-core/src/main/java/cn/hutool/core/builder/GenericBuilder.java +++ b/hutool-core/src/main/java/cn/hutool/core/builder/GenericBuilder.java @@ -1,13 +1,12 @@ package cn.hutool.core.builder; -import cn.hutool.core.lang.func.Consumer2; +import cn.hutool.core.lang.func.Consumer3; import cn.hutool.core.lang.func.Supplier1; import cn.hutool.core.lang.func.Supplier2; import cn.hutool.core.lang.func.Supplier3; import cn.hutool.core.lang.func.Supplier4; import cn.hutool.core.lang.func.Supplier5; - import java.util.ArrayList; import java.util.List; import java.util.function.BiConsumer; @@ -214,8 +213,8 @@ public class GenericBuilder implements Builder { * @param 参数二类型 * @return GenericBuilder对象 */ - public GenericBuilder with(Consumer2 consumer, P1 p1, P2 p2) { - modifiers.add(consumer.toConsumer(p1, p2)); + public GenericBuilder with(Consumer3 consumer, P1 p1, P2 p2) { + modifiers.add(instant ->{consumer.accept(instant, p1, p2);}); return this; } 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 deleted file mode 100644 index 35d48613e..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer2.java +++ /dev/null @@ -1,37 +0,0 @@ -package cn.hutool.core.lang.func; - -import java.util.function.Consumer; - -/** - * 2参数Consumer - * - * @param 目标类型 - * @param 参数一类型 - * @param 参数二类型 - * @author TomXin - * @since 5.7.22 - */ -@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 100644 index 000000000..8748a3565 --- /dev/null +++ b/hutool-core/src/main/java/cn/hutool/core/lang/func/Consumer3.java @@ -0,0 +1,23 @@ +package cn.hutool.core.lang.func; + +/** + * 3参数Consumer + * + * @param 参数一类型 + * @param 参数二类型 + * @param 参数三类型 + * @author TomXin + * @since 5.7.22 + */ +@FunctionalInterface +public interface Consumer3 { + + /** + * 接收参数方法 + * + * @param p1 参数一 + * @param p1 参数二 + * @param p2 参数三 + */ + void accept(P1 p1, P2 p2, P3 p3); +} 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 adab2500a..e74a985ac 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 @@ -62,7 +62,10 @@ public class GenericBuilderTest { Assert.assertEquals(333, box1.getWidth().intValue()); Assert.assertEquals(444, box1.getHeight().intValue()); Assert.assertEquals("TomXin:\"Hello Partner!\"", box1.getTitleAlias()); + } + @Test + public void buildMapTest(){ //Map创建 HashMap colorMap = GenericBuilder .of(HashMap::new) diff --git a/hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java index 5a0d71ca8..3ba18becf 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java @@ -459,4 +459,11 @@ public class ArrayUtilTest { Assert.assertEquals(3, arrayAfterSplit.length); Assert.assertEquals(24, arrayAfterSplit[2].length); } + + @Test + public void getTest(){ + String[] a = {"a", "b", "c"}; + final Object o = ArrayUtil.get(a, -1); + Assert.assertEquals("c", o); + } } diff --git a/hutool-extra/src/main/java/cn/hutool/extra/ftp/Ftp.java b/hutool-extra/src/main/java/cn/hutool/extra/ftp/Ftp.java index f5b336527..607dd2c14 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/ftp/Ftp.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/ftp/Ftp.java @@ -134,6 +134,17 @@ public class Ftp extends AbstractFtp { this.init(); } + /** + * 构造 + * + * @param client 自定义实例化好的{@link FTPClient} + * @since 5.7.22 + */ + public Ftp(FTPClient client) { + super(FtpConfig.create()); + this.client = client; + } + /** * 初始化连接 *