轩辕春秋文化论坛 » 设计与修改 » 关于java clone的问题


2005-2-6 21:40 逐鹿苍狼
[color=blue]public class A
{
  public static void main(String[] args)
  {
    B c1 = new B(5);
    System.out.println("c1: "+c1);
    B c2 = (B)c1.clone();
    System.out.println("c2: "+c2);
   }
}


class B implements Cloneable
{
  double radius;

  public B(double radius)
  {
    this.radius=radius;
  }

  public Object clone()
  {
    try
    {
      return super.clone();
    }
    catch (CloneNotSupportedException ex)
    {
      return null;
    }
  }

  public String toString()
  {
    return "radius "+radius;
  }
}[/color]

请问这段程序有什么问题?
为什么在运行的时候c1对象的指总是不能拷贝到c2中?
谁能解答,谢谢。
1000通宝答谢!!

2005-2-6 22:03 kingofworl
运行的结果是c1=5.0
c2=5.0 没问题呀,还是我没理解

2005-2-6 23:03 逐鹿苍狼
可为什么我运行之后,c1=5.0   c2=null???

2005-2-6 23:11 kingofworl
你的代码绝对正确,我怕看错特意copy试了

2005-2-6 23:15 kingofworl
你看,跟你打得一模一样

2005-2-6 23:21 kingofworl
我看咱俩唯一可能不一样的地方就是super.clone(); 是不是继承的类的这个方法被重写过,其实我是初学者,要是说的不对请多多见谅

2005-2-7 03:09 逐鹿苍狼
我也知道这段代码不会有太大问题。我把你的拷贝后运行,结果和你的一样,c1,c2都为10。
可是我运行我给你的这个就会出现不能拷贝的情况,很奇怪。
不过还是要谢谢你。

2005-2-7 03:10 逐鹿苍狼
11111

2005-2-7 03:23 逐鹿苍狼
确实很重写了,因为clone()方法是由Object类提供的,将Object类的protected改写为public。
钱已汇入。

2005-2-7 08:18 kingofworl
奇怪,开始的那个要是不小心打错了哪里那编译就通不过呀,是不是有什么病毒了 ,我今天突然发现存款变成整了,不过怕没利息不敢去看,原来如此,太客气了,给我88取个吉利就可以了,我给别人都是这么给的,先暂借两天

页: [1]
查看完整版本: 关于java clone的问题


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.