克隆一例

       在一般的开发过程中,往往要遇到从数据库中取出数据组成值对象(通常叫做VO),然后放在列表集中,并传回调用端的情况。在还没有接触到clone的时候,程序往往要在while块中构造VO实例,但这样做并不推荐,甚至应该极力避免,因为会造成程序效率的低下。在使用clone技术以后,程序运行效率有所改善,以下是常用写法,希望对大家有所帮助。

支持clone的VO看起来像这样:

package com.XXX;

import java.util.*;

public class TempJob implements Cloneable {        //声明其可被clone

  private String Jbnr=null;
  private String Jbdw=null; 

  public Object clone() {
      try {
          return super.clone();                               //返回clone以后的对象
          }
          catch (CloneNotSupportedException e) {
              System.out.println(e.toString());
          }

  public void setJbnr(String Jbnr){
      this.Jbnr=Jbnr;
  }

  public String getJbnr(){
      return Jbnr;
  }

  public void setJbdw(String Jbdw){
      this.Jbdw=Jbdw;
  }
 
  public String getJbdw(){
      return Jbdw;
  }
}


对于调用VO的类,像这样:

package com.XXX;
import java.sql.*;
import java.util.*;

public class DoJob{

  private Connection con;
  private Statement stmt;
  private ResultSet rs;
  private ArrayList lis=new ArrayList();

  public ArrayList query(String a){                             
      String sql="";
      sql="select a.*,b.name from temp_job a, user_basic b "
          +"where a.userid = b.userid order by a.wcqk";
      try{
          stmt=con.createStatement();
          rs=stmt.executeQuery(sql);   
          TempJob job=new TempJob();                //只要一个实例
          while (rs.next()){
              job.setJbnr(rs.getString(1));
              job.setJbdw(rs.getString(2));
              lis.add(job.clone());                         //返回被clone对象
          }
    }
    catch(SQLException e){
      System.out.println(e.toString());
    }
    finally {                          
      this.rs=null;
      this.stmt=null;
      con.close();
    }   
    return lis;
  }
}


(请注意!引用、转贴本文应注明原作者:Rosen Jiang 以及出处:http://blog.csdn.net/rosen

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值