diff --git a/CHANGELOG.md b/CHANGELOG.md index f71a42484..bf46419b9 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.8.22(2023-08-30) +# 5.8.22(2023-08-31) ### 🐣新特性 * 【core 】 NumberUtil.nullToZero增加重载(issue#I7PPD2@Gitee) @@ -28,6 +28,7 @@ * 【core 】 修复StrUtil#containsAny NPE问题(pr#1063@Gitee) * 【all 】 修复SONArray的add()方法抛出OutOfMemory异常问题(issue#3286@Github) * 【core 】 修复fillColumns空指针问题(issue#3284@Github) +* 【core 】 修复修复Convert不能转换Optional和Opt问题(issue#I7WJHH@Gitee) ------------------------------------------------------------------------------------------------------------- # 5.8.21(2023-07-29) diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/ConverterRegistry.java b/hutool-core/src/main/java/cn/hutool/core/convert/ConverterRegistry.java index 0a755c4fe..16cb2e9c9 100755 --- a/hutool-core/src/main/java/cn/hutool/core/convert/ConverterRegistry.java +++ b/hutool-core/src/main/java/cn/hutool/core/convert/ConverterRegistry.java @@ -193,6 +193,20 @@ public class ConverterRegistry implements Serializable { type = defaultValue.getClass(); } + // issue#I7WJHH,Opt和Optional处理 + if (value instanceof Opt) { + value = ((Opt) value).get(); + if (ObjUtil.isNull(value)) { + return defaultValue; + } + } + if (value instanceof Optional) { + value = ((Optional) value).orElse(null); + if (ObjUtil.isNull(value)) { + return defaultValue; + } + } + if (type instanceof TypeReference) { type = ((TypeReference) type).getType(); } diff --git a/hutool-core/src/test/java/cn/hutool/core/convert/IssueI7WJHHTest.java b/hutool-core/src/test/java/cn/hutool/core/convert/IssueI7WJHHTest.java new file mode 100755 index 000000000..d3068a3a0 --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/convert/IssueI7WJHHTest.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package cn.hutool.core.convert; + +import cn.hutool.core.lang.Opt; +import org.junit.Assert; +import org.junit.Test; + +import java.util.Optional; + +public class IssueI7WJHHTest { + + @Test + public void toIntTest() { + final Optional optional = Optional.of(1); + final Integer integer = Convert.toInt(optional); + + Assert.assertEquals(Integer.valueOf(1), integer); + } + + @Test + public void toIntTest2() { + final Opt optional = Opt.of(1); + final Integer integer = Convert.toInt(optional); + + Assert.assertEquals(Integer.valueOf(1), integer); + } +}