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

发布于 2022-09-12 00:29:34 字数 532 浏览 34 评论 0

有三个类

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,再全部重新~~~~赋值是不是太繁琐了。

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

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

发布评论

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

评论(4

攒一口袋星星 2022-09-19 00:29:34
  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的实现会隐藏对象属性的设置的调用

希望可以帮到你

好多鱼好多余 2022-09-19 00:29:34

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

迎风吟唱 2022-09-19 00:29:34

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

趁微风不噪 2022-09-19 00:29:34

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

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