有没有一种方法可以使用BeanUtils.copyProperties将Set映射到列表?

LG

BeanUtils.copyProperties用来转换两个bean。

BeanUtils.copyProperties(organization, dtoOrganization);

我想List在一个豆子里放一个,在另一个豆子Set里放一个。

第一个豆:

public class Form {

  private Set<Organization> organization;

}

第二粒豆:

public final class DTOForm {

  private List<DTOOrganization> organization;

}

结果是一个异常,如下所述:使用BeanUtils.copyProperties导致参数类型不匹配

是否可以定制BeanUtils.copyProperties以达到目标?

杀虫剂

您可以使用自定义转换器解决它。主要的想法是为注册新转换器Set使用S ConvertUtils.register(Converter converter, Class<?> clazz)实现您的自定义列表设置转换器的convert(Class<T> type, Object value)方法不是问题

这是您的问题的简单示例:

ListEntity,它具有List属性(据我所知,不要忽略setter和getter,它们的存在是强制性的):

public class ListEntity {
    private List<Integer> col = new ArrayList<>();

    public List<Integer> getCol() {
        return col;
    }

    public void setCol(List<Integer> col) {
        this.col = col;
    }
}

SetEntity,它具有以下Set属性:

public class SetEntity {
    private Set<Integer> col = new HashSet<>();

    public Set<Integer> getCol() {
        return col;
    }

    public void setCol(Set<Integer> col) {
        this.col = col;
    }
}

要进行工作的简单测试类:

public class Test {
    public static void main(String... args) throws InvocationTargetException, IllegalAccessException {
        SetEntity se = new SetEntity();
        se.getCol().add(1);
        se.getCol().add(2);
        ListEntity le = new ListEntity();
        ConvertUtils.register(new Converter() {
            @Override
            public <T> T convert(Class<T> tClass, Object o) {
                List list = new ArrayList<>();
                Iterator it = ((Set)o).iterator();
                while (it.hasNext()) {
                    list.add(it.next());
                }
                return (T)list;
            }
        }, List.class);
        BeanUtils.copyProperties(le, se);
        System.out.println(se.getCol().toString());
        System.out.println(le.getCol().toString());
    }
}

此代码截取器的主要思想是:我们为所有目标类List属性注册了Converter ,它将尝试将某些对象转换oList假设这o是一个集合,我们对其进行迭代,然后返回新创建的列表。

结果,le将同时包含12值。如果您不再需要此转换器,则可以使用取消注册ConvertUtils.deregister()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有一种方法可以使用setxkbmap将AltGr键重新映射为Ctrl?

来自分类Dev

有没有一种方法可以使用VueJs将列表分为几列?

来自分类Dev

有没有一种方法可以使用set / p将变量设置为转义字符?

来自分类Dev

有没有一种方法可以使用自动映射器从列表映射到标量属性?

来自分类Dev

有没有一种方法可以使用推力将数组的所有元素相乘?

来自分类Dev

有没有一种方法可以使Python列表需要某个对象?

来自分类Dev

有没有一种方法可以使for循环沿列表的元素重复?

来自分类Dev

有没有一种方法可以使html列表像这样

来自分类Dev

有没有一种方法可以使用将<string,string>添加到字典的方法?

来自分类Dev

有没有一种方法可以使用“使用”但将文件保持打开状态?

来自分类Dev

有没有一种方法可以使用索引对列表列表进行排序?

来自分类Dev

有没有一种方法可以将CTRL + [映射到Powershell中?

来自分类Dev

Gson:有没有一种方法可以使用GSON解析特定的内部JSON列表?

来自分类Dev

有没有一种方法可以使用NEWID函数生成GUID的列表?

来自分类Dev

有没有一种方法可以使用import获取软件包列表?

来自分类Dev

有没有一种方法可以使用ID列表或ID数组查询MongoDB Rest API

来自分类Dev

有没有一种方法可以使用NEWID函数生成GUID的列表?

来自分类Dev

有没有一种方法可以使用SET操作在SQL中汇总可变日期范围

来自分类Dev

有没有一种方法可以使用Postgis Geometry类型将Spark连接到表?

来自分类Dev

有没有一种方法可以使用wrk将参数传递给GET请求?

来自分类Dev

有没有一种方法可以使用Gradle将Kotlin类编译为JavaScript?

来自分类Dev

有没有一种方法可以使用Volley将TAG添加到NetworkImageView

来自分类Dev

有没有一种方法可以使用Dvorak键盘布局,但是将命令键映射到qwerty?

来自分类Dev

有没有一种方法可以使用C#将TFS的源代码映射到本地系统?

来自分类Dev

有没有一种方法可以使用Hibernate将数据库视图映射到Java对象中?

来自分类Dev

有没有一种方法可以使有序列表中的数字加粗?

来自分类Dev

有没有一种方法可以使列表中的某些元素无法通过angular * ngFor看到?

来自分类Dev

有没有一种方法可以使用BeautifulSoup将列表中的数据正确转换为CSV文件?

来自分类Dev

有没有一种方法可以使用testNG框架将一些测试重复一周?

Related 相关文章

  1. 1

    有没有一种方法可以使用setxkbmap将AltGr键重新映射为Ctrl?

  2. 2

    有没有一种方法可以使用VueJs将列表分为几列?

  3. 3

    有没有一种方法可以使用set / p将变量设置为转义字符?

  4. 4

    有没有一种方法可以使用自动映射器从列表映射到标量属性?

  5. 5

    有没有一种方法可以使用推力将数组的所有元素相乘?

  6. 6

    有没有一种方法可以使Python列表需要某个对象?

  7. 7

    有没有一种方法可以使for循环沿列表的元素重复?

  8. 8

    有没有一种方法可以使html列表像这样

  9. 9

    有没有一种方法可以使用将<string,string>添加到字典的方法?

  10. 10

    有没有一种方法可以使用“使用”但将文件保持打开状态?

  11. 11

    有没有一种方法可以使用索引对列表列表进行排序?

  12. 12

    有没有一种方法可以将CTRL + [映射到Powershell中?

  13. 13

    Gson:有没有一种方法可以使用GSON解析特定的内部JSON列表?

  14. 14

    有没有一种方法可以使用NEWID函数生成GUID的列表?

  15. 15

    有没有一种方法可以使用import获取软件包列表?

  16. 16

    有没有一种方法可以使用ID列表或ID数组查询MongoDB Rest API

  17. 17

    有没有一种方法可以使用NEWID函数生成GUID的列表?

  18. 18

    有没有一种方法可以使用SET操作在SQL中汇总可变日期范围

  19. 19

    有没有一种方法可以使用Postgis Geometry类型将Spark连接到表?

  20. 20

    有没有一种方法可以使用wrk将参数传递给GET请求?

  21. 21

    有没有一种方法可以使用Gradle将Kotlin类编译为JavaScript?

  22. 22

    有没有一种方法可以使用Volley将TAG添加到NetworkImageView

  23. 23

    有没有一种方法可以使用Dvorak键盘布局,但是将命令键映射到qwerty?

  24. 24

    有没有一种方法可以使用C#将TFS的源代码映射到本地系统?

  25. 25

    有没有一种方法可以使用Hibernate将数据库视图映射到Java对象中?

  26. 26

    有没有一种方法可以使有序列表中的数字加粗?

  27. 27

    有没有一种方法可以使列表中的某些元素无法通过angular * ngFor看到?

  28. 28

    有没有一种方法可以使用BeautifulSoup将列表中的数据正确转换为CSV文件?

  29. 29

    有没有一种方法可以使用testNG框架将一些测试重复一周?

热门标签

归档