编写一个包含若干个属性的类A,
要求在A中定义一个可以得到A的拷贝方法,
编写一个能够比较A类对象,其值是否相等的方法。这个是我的思路:
class A{
  String name; int age;
  public A(String n,int a){  this.name=n; this.age=a;}
  public A copy()
{...新建一个返回对象,其属性的值等于this的对应属性的值....}
  public boolean compare(A v)
{.....比较v中每一个‘属性’的值是否等于this对应的属性的值,都相等返回true,否则返回false....}
}
A x=new A(“QQ”,10); //x代表name="QQ" age=10的A类对象。
A y=x.copy();   //y代表x的拷贝,这个拷贝的对象其name="QQ",age=10。但x和y不是同一个对象。
boolean z=x.compare(y);  //z为true,因为x和y的name值及其age值都相等。  
有知道方法的吧友请帮帮忙做下好吗?这个关系到我的期末考试成绩,谢谢!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【zhuqiang1268】截止到2008-06-26 00:43:51的历史汇总数据(不包括此帖):
    发帖数:1                  发帖分:50                 
    结贴数:0                  结贴分:0                  
    未结数:1                  未结分:50                 
    结贴率:0.00  %            结分率:0.00  %            
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    直接利用Object的clone()方法:protected Object clone()   throws CloneNotSupportedExceptionEmployee copy = (Employee)original.clone();
      

  3.   

    为什么不用clone呢?你就是在你的copy()方法中调用clone也是高效的
    equals被覆盖了,注意也要覆盖 hashCode()
      

  4.   

    clone
    3楼的话好像在台湾某人书里看过  有道理
      

  5.   

    这里有个现成的可以给你参考一下,注意复制的时候有浅克隆和深度克隆之分。比如hireday字段需要做深度克隆。
    import java.util.Date;
    public class Employee implements  Cloneable
    {
      private Date hireday;  private double salary;  public Employee(Date h, double s)
      {
        hireday = h;
        salary = s;
      }  @Override
      public boolean equals(Object o)
      {
        Employee e = (Employee) o;
        return this.getHireday().equals(e.getHireday())
            && this.salary == e.getSalary();
      }
      public Date getHireday()
      {
        return (Date) (hireday.clone());
      }  public double getSalary()
      {
        return salary;
      }  public Employee clone() throws CloneNotSupportedException
      {
        Employee cloned = (Employee) super.clone();
        cloned.hireday = (Date) hireday.clone();
        return cloned;
      }
    }
      

  6.   

    还缺一个hashCode方法
    public int hashCode()
      {
        return 7 * this.hireday.hashCode() + 11 * (int) Math.round(this.salary);
      }
      

  7.   

    分要自己写一个拷贝的话就参照clone()这个方法的原代码吧
      

  8.   

    http://www.java2000.net/viewthread.jsp?tid=1235