修复修复Convert不能转换Optional和Opt问题

This commit is contained in:
Looly
2023-08-31 10:52:39 +08:00
parent fcb1d86229
commit 2808fa135d
3 changed files with 54 additions and 1 deletions

View File

@@ -193,6 +193,20 @@ public class ConverterRegistry implements Serializable {
type = defaultValue.getClass();
}
// issue#I7WJHHOpt和Optional处理
if (value instanceof Opt) {
value = ((Opt<T>) value).get();
if (ObjUtil.isNull(value)) {
return defaultValue;
}
}
if (value instanceof Optional) {
value = ((Optional<T>) value).orElse(null);
if (ObjUtil.isNull(value)) {
return defaultValue;
}
}
if (type instanceof TypeReference) {
type = ((TypeReference<?>) type).getType();
}

View File

@@ -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<Integer> optional = Optional.of(1);
final Integer integer = Convert.toInt(optional);
Assert.assertEquals(Integer.valueOf(1), integer);
}
@Test
public void toIntTest2() {
final Opt<Integer> optional = Opt.of(1);
final Integer integer = Convert.toInt(optional);
Assert.assertEquals(Integer.valueOf(1), integer);
}
}