list对象赋值改变原值问题

最近遇到一个问题,针对list列表中的bean对象进行不同处理,赋值给不同的对象实例,但是赋值后发现原值也已经被改变。

经查证,使用BeanUtils.cloneBean(bean实例)方法对bean对象进行克隆,从而实现各自处理各自内容的目的。

 

实例:

 

目的:将list列表中PriceInfoVo 对象中的时间格式由"20081202"转换为"2008-12-02",并重新赋值给另一个PriceInfoVo 对象实例,且保证原实例内容不变。

 

实现如下:

 

放置list对象:

 

引入:import org.apache.commons.beanutils.BeanUtils;

 

  List priceList = new ArrayList();
  PriceInfoVo priceInfoVo = new PriceInfoVo();
  priceInfoVo.setEffDate("20081202");
  priceList.add(priceInfoVo);

 

获取list列表中的bean对象信息,并对其进行格式转换:

 

 //获取list中的PriceInfoVo实例

  PriceInfoVo src = (PriceInfoVo)priceList.get(0);
  
  try {

 

  //克隆获取到的PriceInfoVo实例
   PriceInfoVo dest = (PriceInfoVo)BeanUtils.cloneBean(src);
   

  //更改克隆后PriceInfoVo实例的时间格式
   dest.setEffDate(DateUtil.getDateStr(dest.getEffDate()));
   

  //打印原梳理和克隆后实例的时间格式
   System.out.println("src date:::"+src.getEffDate());
   System.out.println("clone date:::"+dest.getEffDate());


  } catch (IllegalAccessException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (InstantiationException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (InvocationTargetException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (NoSuchMethodException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 

执行结果如下:

src date:::20081202
clone date:::2008-12-02

 

 

 

由上述结果可以看出,时间格式修改并未改变原来的信息。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值