diff --git a/CHANGELOG.md b/CHANGELOG.md index 65814234b..ac6d42c46 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ ------------------------------------------------------------------------------------------------------------- -# 5.8.10.M1 (2022-11-08) +# 5.8.10.M1 (2022-11-10) ### 🐣新特性 * 【http 】 HttpResponse增加getFileNameFromDisposition方法(pr#2676@Github) @@ -11,6 +11,7 @@ * 【db 】 DialectFactory增加identifyDriver重载(issue#I5YWI6@Gitee) * 【core 】 去除ClassloaderUtil的Cache(issue#I5YWI6@Gitee) * 【core 】 ClassScanner 增加忽略加载错误类的扫描方法(pr#855@Gitee) +* 【core 】 优化BeanPath.set方法,避免多次重复调用get方法(pr#865@Gitee) ### 🐞Bug修复 * 【db 】 修复分页时order by截断问题(issue#I5X6FM@Gitee) diff --git a/hutool-core/src/main/java/cn/hutool/core/bean/BeanPath.java b/hutool-core/src/main/java/cn/hutool/core/bean/BeanPath.java index 324bc19c7..bab742532 100644 --- a/hutool-core/src/main/java/cn/hutool/core/bean/BeanPath.java +++ b/hutool-core/src/main/java/cn/hutool/core/bean/BeanPath.java @@ -139,16 +139,18 @@ public class BeanPath implements Serializable { * @param bean Bean、Map或List * @param patternParts 表达式块列表 * @param value 值 + * @return 值 */ - private void set(Object bean, List patternParts, boolean nextNumberPart, Object value) { + private Object set(Object bean, List patternParts, boolean nextNumberPart, Object value) { Object subBean = this.get(patternParts, bean, true); if (null == subBean) { final List parentParts = getParentParts(patternParts); this.set(bean, parentParts, lastIsNumber(parentParts), nextNumberPart ? new ArrayList<>() : new HashMap<>()); - //set中有可能做过转换,因此此处重新获取bean - subBean = this.get(patternParts, bean, true); + // 避免get方法的重复调用 + subBean = this.set(bean, parentParts, lastIsNumber(parentParts), nextNumberPart ? new ArrayList<>() : new HashMap<>()); } BeanUtil.setFieldValue(subBean, patternParts.get(patternParts.size() - 1), value); + return value; } /** diff --git a/hutool-core/src/test/java/cn/hutool/core/date/chinese/IssueI5YB1ATest.java b/hutool-core/src/test/java/cn/hutool/core/date/chinese/IssueI5YB1ATest.java new file mode 100755 index 000000000..d0b9a084c --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/date/chinese/IssueI5YB1ATest.java @@ -0,0 +1,13 @@ +package cn.hutool.core.date.chinese; + +import cn.hutool.core.date.ChineseDate; +import cn.hutool.core.lang.Console; +import org.junit.Test; + +public class IssueI5YB1ATest { + @Test + public void chineseDateTest() { + final ChineseDate date = new ChineseDate(2023, 4, 8, true); + Console.log(date.getGregorianDate()); + } +}