Java 内省/反射复制 bean

发布于 2024-11-13 07:37:24 字数 344 浏览 4 评论 0原文

我正在编写一个通用方法,它复制具有公共字段的两种不同类型的 bean。我正在使用内省来获取写入和读取方法,例如

propertyDescriptor1.getWriteMethod().invoke(bean1, propertyDescriptor2.getReadMethod().invoke(bean2) )

上面的方法对于字符串来说效果很好,但对于任何原始类型(例如 int、long...)却失败了。 有什么优雅的解决方案来复制两种不同类型的豆子吗?

编辑:它已经解决了,问题不在于原始类型,我没有检查 propertyDescriptor.getName() 是否不是“类”

I'm writing a common method which copies two different types of beans which have common fields. I'm using introspection to get the write and read methods, like

propertyDescriptor1.getWriteMethod().invoke(bean1, propertyDescriptor2.getReadMethod().invoke(bean2) )

The above works fine for Strings, but fails for any primitive types like int,long....
Any elegant solutions to copying two different types of beans?

Edit: It's solved, the problem was not with primitive types, I was not checking if the propertyDescriptor.getName() was not "class"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

子栖 2024-11-20 07:37:24

为什么不使用 Apache Commons BeanUtils

它有一个非常有用的方法,称为copyProperties,如果它们共享相同的名称,它将属性从一个 bean 复制到另一个 bean。

Why not use Apache Commons BeanUtils.

It has a very useful method called copyProperties which copies properties from one bean to another if they share the same name.

梦旅人picnic 2024-11-20 07:37:24

您可以编写一个转换为字符串的函数以及一个从字符串转换为任何类型的函数。使用这两者的组合,您可以从几乎任何标量类型转换为任何其他类型。

如果您需要转换集合,那就有点困难,因为您可能需要转换内容。例如列表<整数>列出<双>

您需要转换的灵活性如何?

You can write a function which converts to a String and a function converts from a String to any type. Using a combination of these two you can convert from just about any scalar type to any other.

If you need to convert collections, that is a little harder because you may need to convert the contents. e.g. List<integer> to List<Double>

How flexible to do you need the conversion to be?

一萌ing 2024-11-20 07:37:24

Dozer 是一个强大的 bean 映射器,可以处理嵌套 bean、集合和所有其他如果你自己动手,你会遇到的东西......如果你的豆子很复杂,可能值得检查一下。

Dozer is a powerful bean mapper that can cope with nested beans, collections, and all the other stuff you'll come across if you roll your own... might be worth checking out if your beans are complex.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文