diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/bean/IssueI8M38TTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/bean/IssueI8M38TTest.java index 39e2315a7..1e4b5642d 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/bean/IssueI8M38TTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/bean/IssueI8M38TTest.java @@ -13,6 +13,7 @@ package org.dromara.hutool.core.bean; import lombok.Data; +import lombok.EqualsAndHashCode; import org.dromara.hutool.core.bean.copier.CopyOptions; import org.dromara.hutool.core.collection.ListUtil; import org.dromara.hutool.core.map.MapUtil; @@ -33,16 +34,33 @@ public class IssueI8M38TTest { final ArrayList subPeople = ListUtil.of(subPerson); final HashMap mapping = MapUtil.of("subName", "name"); + final List people = BeanUtil.copyToList(subPeople, Person.class, + // 不覆盖模式下,当第一次subName已经拷贝到值,后续不再覆盖 + CopyOptions.of().setFieldMapping(mapping).setOverride(false)); + + Assertions.assertEquals(subPerson.getSubName(), people.get(0).getName()); + } + + @Test + void copyListByMappingTest2() { + final SubPerson subPerson = new SubPerson(); + subPerson.setAge(14); + subPerson.setOpenid(112233); + subPerson.setSubName("sub名字"); + final ArrayList subPeople = ListUtil.of(subPerson); + + final HashMap mapping = MapUtil.of("subName", "name"); + // subName复制到name后,name字段继续拷贝,覆盖了subName的值 + mapping.put("name", "aaa"); final List people = BeanUtil.copyToList(subPeople, Person.class, CopyOptions.of().setFieldMapping(mapping)); Assertions.assertEquals(subPerson.getSubName(), people.get(0).getName()); } + @EqualsAndHashCode(callSuper = true) @Data - static class SubPerson { - private int age; - private int openid; + static class SubPerson extends Person{ private String subName; }