java 类转换_java实体类转换有没有更优雅的方式?

属性少的话,直接set即可。

如果属性多的话,可以考虑使用Apache中的Bean工具包,主要使用 BeanUtils.copyProperties(Object dest,Object orig) 和 PropertyUtils.copyProperties(Object dest,Object orig),原理无非是反射读取到属性列表,然后循环赋值,主要注意的只拷贝dest和orig的相同的名称的字段,比如orig有一个userName属性,dest有一个userName属性,则orig的userName会赋值到dest的userName上。

我看你的给你的例子name赋值到userName这种情况,上面的工具就不适用了,我们简单做一个转化,上面的工具类可以适用。请看例子:

public class Original{

private Integer id;

private String name;

private String desc;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getDesc() {

return desc;

}

public void setDesc(String desc) {

this.desc = desc;

}

@Override

public String toString() {

return "Original [id=" + id + ", name=" + name + ", desc=" + desc + "]";

}

}

public class Dest{

private Integer id;

private String userName;

private String desc;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getDesc() {

return desc;

}

public void setDesc(String desc) {

this.desc = desc;

}

@Override

public String toString() {

return "Dest [id=" + id + ", userName=" + userName + ", desc=" + desc

+ "]";

}

}

import org.apache.commons.beanutils.PropertyUtils;

public class Test {

public static void main(String[] args) throws Exception {

Original o = new Original();

o.setId(7);

o.setName("七夕快乐");

o.setDesc("老婆给我最好的七夕礼物是给我独处的一天");

Dest d = new Dest();

PropertyUtils.copyProperties(d, o);

System.out.println(d);//Dest [id=7, userName=null, desc=老婆给我最好的七夕礼物是给我独处的一天]

}

}

由于d中userName属性和original中的name属性名称不一致,工具也知道怎么映射,这个时候我们在dest类中添加一个public void setName(String userName){this.userName = userName;}方法,

然后打印下就正确了。[id=7, userName=七夕快乐, desc=老婆给我最好的七夕礼物是给我独处的一天]

一般bean直接的拷贝,都是有很多属性名称相同的,稍微几个不同,用上面的方法即可,如果有很多的属性名不同,那可以自己写一个工具类,实现映射配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值