【问题标题】:Java introspection/reflection copy beansJava内省/反射复制bean
【发布时间】:2011-09-09 05:31:58
【问题描述】:

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

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

上面的方法适用于字符串,但不适用于任何原始类型,如 int,long.... 复制两种不同类型的 bean 有什么优雅的解决方案吗?

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

【问题讨论】:

    标签: java reflection javabeans introspection


    【解决方案1】:

    为什么不使用 Apache Commons BeanUtils

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

    【讨论】:

    • 谢谢,我也去看看 :)
    【解决方案2】:

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

    如果您需要转换集合,这有点困难,因为您可能需要转换内容。例如List 到 List

    您需要转换有多灵活?

    【讨论】:

      【解决方案3】:

      Dozer 是一个强大的 bean 映射器,它可以处理嵌套 bean、集合以及如果你自己滚动会遇到的所有其他东西……如果你的 bean 很复杂,可能值得一试。

      【讨论】:

        猜你喜欢
        • 2011-01-03
        • 1970-01-01
        • 2013-10-18
        • 1970-01-01
        • 1970-01-01
        • 2015-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多