【问题标题】:Copy property with different names between beans using BeanUtils使用 BeanUtils 在 bean 之间复制具有不同名称的属性
【发布时间】:2012-10-19 08:43:04
【问题描述】:

我想使用具有相同字段但名称不同的 BeanUtils 将属性值从 A 类复制到 B 类。是否可以提供属性名称到不同名称,年龄到不同年龄等的映射,并实现复制?我很想知道这是否可以通过任何方式仅使用 Apache Commons 实用程序(而不是任何其他工具)来实现。

class ClassA{
    private String name;
    private Integer age;
    ... // Setter and Getter methods
} 

class ClassB{
    private String differentName;
    private Integer differentAge;
    ... // Setter and Getter methods for the private fields
}

【问题讨论】:

    标签: java javabeans apache-commons-beanutils


    【解决方案1】:

    Apache Commons BeanUtils 有方法 populate(Object bean, Map properties) 接受映射以使用键值对填充 Bean。

    注意:我刚刚看到了 Apache-Commons 的限制 - 但它可能对其他人仍然有用,而且就我而言,这是更好的解决方案。

    当名称匹配时使用Dozer,它将自动复制值。或者在您的情况下,您可以在 xml 映射文件中指定源和目标成员。

    【讨论】:

    • 但是填充仍然需要相同的字段名称。我如何将“年龄”属性映射到“不同年龄”属性?
    • 正如您在链接的 API 中所读到的:“属性 - 以属性名称为键的映射,并设置相应的(字符串或字符串 [])值”。键必须是“differentAge”,值必须是 20 或其他任何值……您必须以这种方式或使用 Dozer 和 xml 映射将值映射到某处。
    • 不客气,很久没发这个问题了:)
    猜你喜欢
    • 1970-01-01
    • 2011-12-25
    • 2021-01-13
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多