为了账号安全,请及时绑定邮箱和手机立即绑定

[Java]对对象深度拷贝的问题

[Java]对对象深度拷贝的问题

繁华开满天机 2019-04-25 16:15:25
我现在有如下这几个对象:class A {     private Long id;     private List<B> listB;     private D d;     ...... } class B {     private Long id;     private A a;     private List<C> listC;     ...... } class C {     private Long id;     private B b;     ...... } class D {     private Long id;     private A a;     ...... }现在我希望将A对象进行深拷贝,将A对象下的所有属性都做一个副本出来,但是ID不要复制。 我现在的想法是: 1.将每个对象clone出来一个副本,然后将id栏位置空。 2.或者对每个对象做一个构造函数,如:public A (A a){     this.xxx = a.xxx;     ...... }然后将每个对象通过构造函数来构一个新的对象出来,除了ID栏位。  但是这样做就需要写大篇的代码,请问大家有没有什么比较简单的方法来实现这个功能?
查看完整描述

5 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

序列化,反序列化,清空id


查看完整回答
反对 回复 2019-05-07
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

推荐的方法是:
做一个顶层类,ABCD都从顶层类集成,这样你只需要写一个clone()就可以了。
在这个clone里:
1:名字为ID的属性跳过;
2:instanceof判断是否是顶层类的对象,如果是调用clone()进行拷贝;
3:简单类型直接通过反射赋值;

查看完整回答
反对 回复 2019-05-07
  • 5 回答
  • 0 关注
  • 664 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信