From 17d259a30970cbaffcbe6bd76d209923880fb236 Mon Sep 17 00:00:00 2001 From: Looly Date: Sun, 16 Oct 2022 20:40:20 +0800 Subject: [PATCH] fix ser bug --- .../main/java/cn/hutool/core/map/CamelCaseMap.java | 5 ++++- .../java/cn/hutool/core/map/CaseInsensitiveMap.java | 5 ++++- .../java/cn/hutool/core/map/CamelCaseMapTest.java | 13 +++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/map/CamelCaseMap.java b/hutool-core/src/main/java/cn/hutool/core/map/CamelCaseMap.java index d3fc0d2e7..e5e7b04ef 100644 --- a/hutool-core/src/main/java/cn/hutool/core/map/CamelCaseMap.java +++ b/hutool-core/src/main/java/cn/hutool/core/map/CamelCaseMap.java @@ -2,8 +2,10 @@ package cn.hutool.core.map; import cn.hutool.core.text.StrUtil; +import java.io.Serializable; import java.util.HashMap; import java.util.Map; +import java.util.function.Function; /** * 驼峰Key风格的Map
@@ -73,7 +75,8 @@ public class CamelCaseMap extends FuncKeyMap { */ @SuppressWarnings("unchecked") CamelCaseMap(final MapBuilder emptyMapBuilder) { - super(emptyMapBuilder.build(), (key) -> { + // issue#I5VRHW@Gitee 使Function可以被序列化 + super(emptyMapBuilder.build(), (Function & Serializable)(key) -> { if (key instanceof CharSequence) { key = StrUtil.toCamelCase(key.toString()); } diff --git a/hutool-core/src/main/java/cn/hutool/core/map/CaseInsensitiveMap.java b/hutool-core/src/main/java/cn/hutool/core/map/CaseInsensitiveMap.java index c3c7c5c69..6ca479ba3 100644 --- a/hutool-core/src/main/java/cn/hutool/core/map/CaseInsensitiveMap.java +++ b/hutool-core/src/main/java/cn/hutool/core/map/CaseInsensitiveMap.java @@ -1,7 +1,9 @@ package cn.hutool.core.map; +import java.io.Serializable; import java.util.HashMap; import java.util.Map; +import java.util.function.Function; /** * 忽略大小写的Map
@@ -73,7 +75,8 @@ public class CaseInsensitiveMap extends FuncKeyMap { */ @SuppressWarnings("unchecked") CaseInsensitiveMap(final MapBuilder emptyMapBuilder) { - super(emptyMapBuilder.build(), (key)->{ + // issue#I5VRHW@Gitee 使Function可以被序列化 + super(emptyMapBuilder.build(), (Function & Serializable)(key)->{ if (key instanceof CharSequence) { key = key.toString().toLowerCase(); } diff --git a/hutool-core/src/test/java/cn/hutool/core/map/CamelCaseMapTest.java b/hutool-core/src/test/java/cn/hutool/core/map/CamelCaseMapTest.java index 9f8dc2760..b436a7b7f 100644 --- a/hutool-core/src/test/java/cn/hutool/core/map/CamelCaseMapTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/map/CamelCaseMapTest.java @@ -1,5 +1,6 @@ package cn.hutool.core.map; +import cn.hutool.core.io.SerializeUtil; import org.junit.Assert; import org.junit.Test; @@ -20,4 +21,16 @@ public class CamelCaseMapTest { Assert.assertEquals("OK", map.get("customKey")); Assert.assertEquals("OK", map.get("custom_key")); } + + @Test + public void serializableKeyFuncTest() { + final CamelCaseMap map = new CamelCaseMap<>(); + map.put("serializable_key", "OK"); + final CamelCaseMap deSerializableMap = SerializeUtil.deserialize(SerializeUtil.serialize(map)); + Assert.assertEquals("OK", deSerializableMap.get("serializable_key")); + Assert.assertEquals("OK", deSerializableMap.get("serializableKey")); + deSerializableMap.put("serializable_func", "OK"); + Assert.assertEquals("OK", deSerializableMap.get("serializable_func")); + Assert.assertEquals("OK", deSerializableMap.get("serializableFunc")); + } }