java中有没有类似C++中到拷贝构造函数,我想实现对象拷贝? 如果这个对象的所属类实现了clone()方法,就可以通过该对象的该方法获得一个克隆的对象,它们的属性值都相等,但内存地址不一样,也就是说是两个对象 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 能否给出clone()方法到例子 我重载了clone()方法,但还需要作什么修改呢,能否给出一个例子? http://community.csdn.net/Expert/topic/3641/3641511.xml?temp=.4475977 给你些例子(也是论坛里的):class ATest{ private int a; ATest(int i){ a = i; } void set(int i) { a = i; } int get(){ return a; }}class ATestClone implements Cloneable{ private int a; ATestClone(int i){ a = i; } void set(int i) { a = i; } int get(){ return a; } public Object clone(){ Object o = null; try{ o = super.clone(); }catch(CloneNotSupportedException e){ System.err.println("Can not clone"); } return o; }}public class ArrayCopy{ static void print(ATest[] s){ for(int i = 0; i <s.length; i++ ){ System.out.println(s[i].get());; } } static void print(ATestClone[] s){ for(int i = 0; i <s.length; i++ ){ System.out.println(s[i].get());; } } public static void main(String args[]){ ATest[] arr = new ATest[5]; for(int i = 0; i < arr.length; i++ ){ arr[i] = new ATest(i); } /** //测试 1 //ATest[] arrCopy = new ATest[arr.length]; //System.arraycopy(arr, 0, arrCopy, 0, arr.length);//使用此方法,更新arrCopy同时会更新arr System.out.println("befor updated"); print(arrCopy); print(arr); System.out.println("after updated"); arrCopy[0].set(100); print(arrCopy); print(arr); */ /** //测试 2 ATest[] arrClone = (ATest[])arr.clone();//效果同System.arraycopy(),只是浅拷贝 System.out.println("befor updated"); print(arrClone); print(arr); System.out.println("after updated"); arrClone[0].set(100); print(arrClone); print(arr); */ //测试 3 //深拷贝 ATestClone[] arr2 = new ATestClone[5]; for(int i = 0; i < arr.length; i++ ){ arr2[i] = new ATestClone(i); } //first, clone array //ATestClone[] arrClone = (ATestClone[])arr2.clone(); ATestClone[] arrClone = new ATestClone[arr2.length]; //then clone each object of this array for(int i = 0; i < arr2.length; i++ ){ arrClone[i] = (ATestClone)arr2[i].clone(); } System.out.println("befor updated"); print(arrClone); print(arr2); System.out.println("after updated"); arrClone[0].set(100); print(arrClone); print(arr2); }} 怎么用httpClient实现和socket一样的数据传递? Socket 中应用ObjectOutputStream和ObjectInputStream读写数据问题 java中如何手动按按钮停止一个已经start的线程 关于CLASS转EXE问题 求助几句语法 关于System.getenv("TEMP"),应该用什么方法呢 问一个关于 static 有点迷惑的问题。 一个小问题!!! 如何解决方法返回值和try catch的矛盾,代码见内 技术讨论:在没有服务器的情况下,能不能实现在... 访问权限问题! 有谁来挑战一下!做做这个菜鸟题呀?
private int a;
ATest(int i){ a = i; }
void set(int i) { a = i; }
int get(){ return a; }
}class ATestClone implements Cloneable{
private int a;
ATestClone(int i){ a = i; }
void set(int i) { a = i; }
int get(){ return a; }
public Object clone(){
Object o = null;
try{
o = super.clone();
}catch(CloneNotSupportedException e){
System.err.println("Can not clone");
}
return o;
}
}public class ArrayCopy{ static void print(ATest[] s){
for(int i = 0; i <s.length; i++ ){
System.out.println(s[i].get());;
}
} static void print(ATestClone[] s){
for(int i = 0; i <s.length; i++ ){
System.out.println(s[i].get());;
}
} public static void main(String args[]){
ATest[] arr = new ATest[5];
for(int i = 0; i < arr.length; i++ ){
arr[i] = new ATest(i);
}
/**
//测试 1
//ATest[] arrCopy = new ATest[arr.length];
//System.arraycopy(arr, 0, arrCopy, 0, arr.length);//使用此方法,更新arrCopy同时会更新arr
System.out.println("befor updated");
print(arrCopy);
print(arr);
System.out.println("after updated");
arrCopy[0].set(100);
print(arrCopy);
print(arr);
*/ /**
//测试 2
ATest[] arrClone = (ATest[])arr.clone();//效果同System.arraycopy(),只是浅拷贝
System.out.println("befor updated");
print(arrClone);
print(arr);
System.out.println("after updated");
arrClone[0].set(100);
print(arrClone);
print(arr);
*/ //测试 3
//深拷贝
ATestClone[] arr2 = new ATestClone[5];
for(int i = 0; i < arr.length; i++ ){
arr2[i] = new ATestClone(i);
}
//first, clone array
//ATestClone[] arrClone = (ATestClone[])arr2.clone();
ATestClone[] arrClone = new ATestClone[arr2.length];
//then clone each object of this array
for(int i = 0; i < arr2.length; i++ ){
arrClone[i] = (ATestClone)arr2[i].clone();
}
System.out.println("befor updated");
print(arrClone);
print(arr2);
System.out.println("after updated");
arrClone[0].set(100);
print(arrClone);
print(arr2);
}
}