import java.util.*;public class emplo implements Cloneable {
    public emplo(String n,double s)
    {
        name=n;
        salary=s;
    }
    public emplo clone() throws CloneNotSupportedException
 
    {
        emplo cloned=(emplo)super.clone();
        cloned.hireDay=(Date)hireDay.clone();
        return cloned;
    }
   
    public void setHireDay(int year ,int month,int day)
    {
        hireDay=new GregorianCalendar(year , month-1 , day).getTime();
        
    }
    
    public void raiseSalary(double x)
    {
        double raise=salary*x/100;
        salary+=raise;
        
    }
    
    public String ToString()
    {
        return "emplo[name=" +name + ",salary=" + salary + ",hireDay="+ hireDay + "]";
    }
    private String name;
    private double salary;
    private Date  hireDay;}
import java.util.*;
/**
 *
 * @author Administrator
 */
public class Main {    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
     try
     {
       
            emplo ori=new emplo("chenpeng",40000);
            ori.setHireDay(2008, 5, 5);
            emplo copy=ori.clone();
            copy.raiseSalary(10);
            copy.setHireDay(2000,1, 1);
            System.out.println("ori="+ori);
            System.out.println("copy="+copy);
     }
     catch(CloneNotSupportedException e)
     {
         e.printStackTrace();
     }
      
       
    }
    }

解决方案 »

  1.   

    ori=test.emplo@291aff
    copy=test.emplo@ab95e6克隆成功,有什么问题?
      

  2.   

    public String ToString() 改为public String toString() 
    不然你没有Object的toString()
      

  3.   

    结果
    ori=emplo[name=chenpeng,salary=40000.0,hireDay=Mon May 05 00:00:00 CST 2008]
    copy=emplo[name=chenpeng,salary=44000.0,hireDay=Sat Jan 01 00:00:00 CST 2000]
      

  4.   

    楼主这个是core java上的原例题啊,呵呵
    import java.util.*;public class CloneTest
    {  
       public static void main(String[] args)
       {  
          try
          {
             Employee original = new Employee("John Q. Public", 50000); 
             original.setHireDay(2000, 1, 1);
             Employee copy = original.clone();
             copy.raiseSalary(10);
             copy.setHireDay(2002, 12, 31);
             System.out.println("original=" + original);
             System.out.println("copy=" + copy);
          }
          catch (CloneNotSupportedException e) 
          { 
             e.printStackTrace(); 
          }
       }
    }class Employee implements Cloneable
    {  
       public Employee(String n, double s)
       {  
          name = n;
          salary = s;
       }   public Employee clone() throws CloneNotSupportedException
       {
          // call Object.clone()
          Employee cloned = (Employee)super.clone(); 
          
          // clone mutable fields
          cloned.hireDay = (Date)hireDay.clone();
          
          return cloned;
       }   /**
          Set the hire day to a given date
          @param year the year of the hire day
          @param month the month of the hire day
          @param day the day of the hire day
       */
       public void setHireDay(int year, int month, int day)
       {
          hireDay = new GregorianCalendar(year, month - 1, day).getTime();
       }   public void raiseSalary(double byPercent)
       {  
          double raise = salary * byPercent / 100;
          salary += raise;
       }   public String toString()
       {
          return "Employee[name=" + name
             + ",salary=" + salary
             + ",hireDay=" + hireDay
             + "]";
       }   private String name;
       private double salary;
       private Date hireDay;
    }