关于JAVA对象转换的问题,两个对象中有一个属性类型不同,怎样相互转换

有三个类

class DeviceFormatA {
    private Integer id;
    private String name;
    private Integer type; 
}

class DeviceFormatB {
    private Integer id;
    private String name;
    private Type type;
}

class Type {
    private Integer id;
    private String name;
}

我从远程服务器上获取数据根据返回json格式自动封装成DeviceFormatB类型,现在我需要取出其中的type.id,然后将DeviceFormatB转换为DeviceFormatA对象存到本地数据库,请问将DeviceFormatB转换为DeviceFormatA,应该怎样做效率比较高,如果新建一个DeviceFormatA,再全部重新~~~~赋值是不是太繁琐了。

阅读 6.5k
4 个回答
  1. 你的效率高如果是指的性能的话;setter操作肯定是一些bean copy 框架(cglib、spring、apache)要好的。
  2. 只不过我看你这个字段值,这么少,也繁琐不到哪去吧,也没必要使用bean copy这种框架;直接set操作就好,
  3. 如果是想优雅一点的话,封装一下这个 B convert to A的操作就好了。

bean copy框架的优点和缺点都很明显:

优点

* 写法优雅简洁
* 一些相对高阶的使用方式比较简洁,比如反射方式获取类属性值等

缺点

* 性能较差,因为beancopy框架背后的实现都是通过[java反射](https://docs.oracle.com/javase/tutorial/reflect/index.html)机制去做的,通常情况性能不会比normal方式更优。
* 引用查找难,bean copy的实现会隐藏对象属性的设置的调用
希望可以帮到你

补充一下楼上,bean copy框架相比set性能较差,比较耗时

说实话, 做Java一般不需要刻意钻这种牛角尖.
数据量小, 那种方式都可以. 自己调用setter或者使用Bean工具copy都差不多(相对来说Bean工具使用Reflect会更慢)...
数据量大直接用文件交换不是更好?
或者在数据库之间做远程推送.

直接存不行么?也别转换成类了 JSONObject直接读取值写入数据库得了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题