在一般的开发过程中,往往要遇到从数据库中取出数据组成值对象(通常叫做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;   } }  
 
  |