diff --git a/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java b/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java index f328267db..4dcbd1769 100644 --- a/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java @@ -573,6 +573,18 @@ public class BeanUtil { // --------------------------------------------------------------------------------------------- copyProperties + /** + * 创建对应的Class对象并复制Bean对象属性 + * + * @param source 源Bean对象 + * @param tClass 目标Class + */ + public static T copyProperties(Object source, Class tClass) { + T target = ReflectUtil.newInstance(tClass); + copyProperties(source, target, CopyOptions.create()); + return target; + } + /** * 复制Bean对象属性 * diff --git a/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java index 6c9917159..b12874e72 100644 --- a/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java @@ -202,6 +202,20 @@ public class BeanUtilTest { Assert.assertTrue(set.contains("subName")); } + @Test + public void copyProperties(){ + SubPerson person = new SubPerson(); + person.setAge(14); + person.setOpenid("11213232"); + person.setName("测试A11"); + person.setSubName("sub名字"); + SubPerson person1 = BeanUtil.copyProperties(person, SubPerson.class); + Assert.assertEquals(14,person1.getAge()); + Assert.assertEquals("11213232",person1.getOpenid()); + Assert.assertEquals("测试A11",person1.getName()); + Assert.assertEquals("sub名字",person1.getSubName()); + } + @Test public void copyPropertiesHasBooleanTest() { SubPerson p1 = new SubPerson();