diff --git a/CHANGELOG.md b/CHANGELOG.md index 1db7352b4..4fb4291e1 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,6 @@ * 【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 bab742532..6d43fbd8b 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 @@ -141,16 +141,15 @@ public class BeanPath implements Serializable { * @param value 值 * @return 值 */ - private Object set(Object bean, List patternParts, boolean nextNumberPart, Object value) { + private void 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<>()); - // 避免get方法的重复调用 - subBean = this.set(bean, parentParts, lastIsNumber(parentParts), nextNumberPart ? new ArrayList<>() : new HashMap<>()); + //set中有可能做过转换,因此此处重新获取bean + subBean = this.get(patternParts, bean, true); } BeanUtil.setFieldValue(subBean, patternParts.get(patternParts.size() - 1), value); - return value; } /**