From cab34df3135cd066af5b1d0b1b728fc48a25cf46 Mon Sep 17 00:00:00 2001 From: Luguoming <185164015@qq.com> Date: Fri, 12 Jun 2020 09:04:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=8D=E5=88=B6=E5=88=9B=E5=BB=BA=E4=B8=80?= =?UTF-8?q?=E4=B8=AABean=E5=AF=B9=E8=B1=A1,=20=E5=B9=B6=E5=BF=BD=E7=95=A5?= =?UTF-8?q?=E6=9F=90=E4=BA=9B=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/hutool/core/bean/BeanUtil.java | 15 +++++++++++++++ .../java/cn/hutool/core/bean/BeanUtilTest.java | 10 ++++++++++ 2 files changed, 25 insertions(+) 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 17608fc02..fddd679bf 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 @@ -618,6 +618,21 @@ public class BeanUtil { copyProperties(source, target, CopyOptions.create()); return target; } + + /** + * 按照Bean对象属性创建对应的Class对象,并忽略某些属性 + * + * @param 对象类型 + * @param source 源Bean对象 + * @param tClass 目标Class + * @param ignoreProperties 不拷贝的的属性列表 + * @return 目标对象 + */ + public static T copyProperties(Object source, Class tClass, String... ignoreProperties) { + T target = ReflectUtil.newInstanceIfPossible(tClass); + copyProperties(source, target, CopyOptions.create().setIgnoreProperties(ignoreProperties)); + 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 6e458bece..0f7912b08 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 @@ -380,6 +380,16 @@ public class BeanUtilTest { Assert.assertEquals(info.getBookID(), entity.getBookId()); Assert.assertEquals(info.getCode(), entity.getCode2()); } + + @Test + public void copyBeanTest(){ + Food info = new Food(); + info.setBookID("0"); + info.setCode("123"); + Food newFood = BeanUtil.copyProperties(info, Food.class, "code"); + Assert.assertEquals(info.getBookID(), newFood.getBookID()); + Assert.assertNull(newFood.getCode()); + } @Data public static class Food {