java对象赋值问题

今天写程序,发现经常容易犯的问题,就是java对象传值问题,如以下两端代码:

 
Model model=new Model();
model.setModelName(modelName);
model.setIndex(preModelNumber);
preModelNumber++;

List<ViewPoint> temp=new ArrayList<>();

for(int i=0;i<Points.size();i++){
    ViewPoint vp=new ViewPoint();
    vp.setOrder(Points.get(i).getOrder());
    vp.setAbsX(Points.get(i).getAbsX());
    vp.setAbsY(Points.get(i).getAbsY());
    vp.setAbsZ(Points.get(i).getAbsZ());
    temp.add(vp);
}
model.setPoints(temp);
fieldModelXml.getItemModel().add(model);
 
Model model=new Model();
model.setModelName(modelName);
model.setIndex(preModelNumber);
preModelNumber++;

List<ViewPoint> temp=new ArrayList<>();
ViewPoint vp=new ViewPoint();

for(int i=0;i<Points.size();i++){
    vp.setOrder(Points.get(i).getOrder());
    vp.setAbsX(Points.get(i).getAbsX());
    vp.setAbsY(Points.get(i).getAbsY());
    vp.setAbsZ(Points.get(i).getAbsZ());
    temp.add(vp);
}
model.setPoints(temp);
fieldModelXml.getItemModel().add(model);
表面只是vp定义在里外的区别,但是实际上完全不同效果,第一段代码每次循环,vp都会销毁重新创建,不会出现赋值同一对象问题。而第二段
代码循环中,vp没有被销毁,最后的结果就是所有的tem中都被赋值了vp的引用,最后所以temp中的值都为循环最后一个赋值,导致不想要的结果。这一点要多注意
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值