Student a=new Student("xiao");
String b=new Student;
b=a;上面的b是指向了a其实和a是属于同一个内存的引用现在想生成一个b b的内容等于a 但是b是另外的一个内存的引用
也就是说与a只有内存上相同的关系好象有个.clone()但是尝试下连编译都过不去!指点下
String b=new Student;
b=a;上面的b是指向了a其实和a是属于同一个内存的引用现在想生成一个b b的内容等于a 但是b是另外的一个内存的引用
也就是说与a只有内存上相同的关系好象有个.clone()但是尝试下连编译都过不去!指点下
解决方案 »
- Worldwind Java调用WMS服务的问题
- Java 动画的问题 求高手指点
- 如何设置Jtable中的行的背景颜色!!! 我刚开始用swing,帮帮忙吧!!!
- Saro(石头) 和其他感兴趣的朋友请进,继续讨论如何将ImageIcon对象保存到本地的问题,前面的问题已经结贴,谢谢;-)
- 知道PHP的crypt()生成的密文,如果用JAVA校验明文是否正确?
- 关于输入输出的问题
- 怎么在jbuilder7里做成jar文件?在线等
- applet中的JComboBox不能下拉的问题。。。
- 项目合作开发,有兴趣的请进。。。
- 很严肃的一个问题,困惑的jacob
- 求助,关于字符串分割的问题,在线,急等,解决问题立即揭贴。。。如有一未知的字符串,可能是String a="3231,3232,3234," ,也可能是Stri
- 帮我看看是哪里错了?
object.clone(),可以把object理解为一个指针,指向一块存储空间,clone()是把
这个空间里的东西都copy一份,放到另一个地方去,
于是引出了影子克隆和**(忘了另一个叫什么了,大概是深层克隆吧)
由于object是个指针,加入object.clone()这个object有个属性是object_sun,
object.clone()的调用只是把object_sun 另存了,而不是把这个 object_sun 的内容另存了,所以object通过object.clone() 克隆出来的对象的 object_sun 属性和object的object_sun 属性指到同一个位置,改变一个,另一个也会变,
public class CloneTest
{
public static void main(String[] args)
{
Employee emp = new Employee("kevin");
emp.address = new Address("Beijing");
System.out.println("name: " + emp.name + " age: " + emp.age + " Address: " + emp.address.city);
Employee empClone = (Employee) emp.clone();
empClone.age = 50;
empClone.name = "ding";
empClone.address.city = "Shanghai";
System.out.println("name: " + empClone.name +
" age: " + empClone.age
+" Address: " + emp.address.city);
System.out.println("name: " + emp.name + " age: " + emp.age + " Address: " + emp.address.city);
}
}class Employee implements Cloneable
{
String name;
int age;
Address address;
public Employee(String name)
{
this.name = name;
this.age = 30;
}
public Object clone()
{
try
{
return super.clone();
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}class Address
{
String city;
public Address(String city)
{
this.city = city;
}
}
这段代码很好的说明了克隆的机制
name: kevin age: 30 Address: Beijing
name: ding age: 50 Address: Shanghai
name: kevin age: 30 Address: Shanghai楼主你好好看看上面的代码,就没问题了
还要注意,如果你所要复制的类中含有其他的对象,在clone对象中也需要克隆这个对象。
2、你的Student类要重载clone()方法,如果你的Student类中包含有非基本数据类型的对象成员,还需要在重载clone()的方法里面对这些成员进行深度克隆(也就是成员对象.clone())