BeanUtils copyproperties()集合属性可以复制吗?

kainever 2015-04-10 12:52:43
比如:

class A {
Set<A> sets = new HashSet<>();
}

class B {
Set<B> sets = new HashSet<>();
}

A a = new A()
B b = new B()
Set<> s = new Set<>();
a.setSets(s);

BeanUtils.copyproperties(b , a);

怎样能够把A 中Set复制给B,而且set中的元素的类型也要变化,A类型和B类型 属性都是一样的!
或者,可以这样做吗?
...全文
2171 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
suciver 2015-04-10
  • 打赏
  • 举报
回复
光这样是不够的,你要自定义个类型转换器,apache的beanutils内部的类型转换是基于ConvertUtils的,你可以用ConvertUtils.register注册B类到A类的类型转换
资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 在Java开发中,Apache Commons BeanUtils是一个非常实用的工具库,它提供了诸多便捷方法来处理JavaBean对象,比如属性复制、设置和获取等。不过,正如标题所提到的,“使用BeanUtils操作属性的一个小坑”,在实际应用中,我们可能会碰到一些意外问题。本文将深入剖析这一问题,并给出相应的解决方案。 BeanUtils的核心功能之一是属性的自动映射,这极大地简化了对象间的数据传输过程。例如,借助BeanUtils.copyProperties()方法,我们可以迅速地将一个JavaBean的属性复制到另一个JavaBean上。但需要注意的是,此方法默认会忽略源对象中不存在于目标对象的属性,而目标对象中未在源对象中找到的属性则会维持原状。问题的关键在于,BeanUtils在执行属性复制操作时,会通过反射调用getter和setter方法。如果JavaBean的属性名称与实际的getter或setter方法不完全匹配,或者属性类型不兼容,就容易引发异常。比如,假设存在一个名为firstName的属性,但其getter方法错误地写成了getFirst_Name,那么BeanUtils就无法正确识别该属性,进而导致数据无法正确复制。此外,BeanUtils在处理集合类型属性时也存在一些需要注意的地方。假设源对象的集合属性为null,而目标对象的对应集合属性已经初始化,那么在复制过程中,目标对象的集合可能会被意外清空,而不是保留其原有内容。这是一个比较常见的陷阱,需要开发者格外留意。 为了解决这些问题,我们可以采取以下几种策略:首先,确保getter和setter方法的一致性。要保证JavaBean的属性名、getter和setter方法的命名严格遵循JavaBean规

81,117

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧