引用发生的奇怪问题,Java达人请入内指点。
代码如下:
classA entityTak1=new classA();
// PAK1 Process
entityTak1=entityTmp;
entityTak1.setPNumber("");
entityTak1.setPortion("");
entityTak1.setHiritsu("* "+String.valueOf(dRatio));
entityTak1.setSyubetsu("");
entityTak1.setKisan1("");
entityTak1.setKessaiJyoken1("");
listRearranged.add(entityTak1);
classA entityTak2=new classA();
// PAK2 Process
entityTak2=entityTmp;
entityTak2.setPNumber("");
entityTak2.setPortion("");
entityTak2.setHiritsu("");
entityTak2.setSyubetsu("");
entityTak2.setKisan1("");
entityTak2.setKessaiJyoken1("");
entityTak2.setTsuka("税抜");
listRearranged.add(entityTak2);
这段代码的原意图是想把初始链表中原有的一条数据根据业务分解成两条,也就是从entityTmp中分解出entityTak1和entityTak2(注:这三个实例的类型一致为classA),再把这两个新实例插入到重排序链表中。
结果执行后发现,重排序链表listRearranged插入了两条一样的数据,它们都和entityTak2中的数据一致,entityTak1中的数据被清除了。
我认为是引用使用错误,所以现在用以下语句替代entityTak2(entityTak1)=entityTmp一句来解决问题,
。。。。
entityTak1.setPNumber(entityTmp.getPNumber());
entityTak1.setPortion(entityTmp.getPortion());
entityTak1.setHiritsu(entityTmp.getHiritsu());
entityTak1.setSyubetsu(entityTmp.getSyubetsu());
。。。。
现在问题解决了,但是这样的代码耦合性大且不美观,请问如何修改把上述传值的过程放入到classA类中去,并请剖析一下发生错误的根本原因,谢谢。