使用Java如何实现浅表复制和深表复制? 我自己写了一个类,想实现clone接口,不知道方法体怎么写!请高手指点。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 克隆: 新对象的所有字段与源对象完全相同深度克隆: 新对象的对象类型的字段也必须克隆, 跟源对象的对象类型字段已经不是同一个对象了 下面是普通克隆 public static class CloneTest implements Cloneable{ private int[] ns; public CloneTest(int n){ ns=new int[n]; } public Object clone(){ try{ CloneTest cloned=(CloneTest)super.clone(); return cloned; } catch(CloneNotSupportedException e){ } return null; } }深度克隆 public class CloneTest implements Cloneable{ private int[] ns; public CloneTest(int n){ ns=new int[n]; } public Object clone(){ try{ CloneTest cloned=(CloneTest)super.clone(); cloned.ns=this.ns.clone(); // 深度克隆 return cloned; } catch(CloneNotSupportedException e){ } return null; } } 相关定义我知道,但是我不想那么费劲的一行一行的写代码,浅表复制好说,但是如果类内有一个field,Object类型,有时候可能是这个类对象,有时候是那个类对象,我这个方法体怎么写。我想通过序列化的方式实现,有没有高手给段相关代码 能不能给下代码,反射不大会用,找不到私有field。 用 getDeclaredFields 方法;包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。 用反序列化方式实现深复制,首先保证被复制的对象类实现Serializable接口,类的属性均为基本类型(若有引用类型的话,需要保证次引用类也实现Serializable接口),并在此类中定义一个static final long serialVersionUid=.....,,用getDeclaredFields()获取所有属性,getModifiers获取语言修饰符。等,如果还有啥不懂得,直接API了, 如何设置让子类的getResource()拿到的不是父类的classloader 最小化后,再还原就没有颜色了,是怎么回事? 如何用java在word中替换指定的字符串? 请问session的超时到底是指什么啊? 第一次发帖,求大神看看为什么出现空指针 Java删除txt中文件中某一行数据 求教:很简单的问题。 用java读取位图 javamail中文问题 北京现在还买不到程序员JAVA刊!不是说已经上市了么?骗子!骗子!!!! 初学JAVA,求方向 网上看到的南京文思面试的一道题目,求解
深度克隆: 新对象的对象类型的字段也必须克隆, 跟源对象的对象类型字段已经不是同一个对象了
下面是普通克隆 public static class CloneTest implements Cloneable{
private int[] ns; public CloneTest(int n){
ns=new int[n];
} public Object clone(){
try{
CloneTest cloned=(CloneTest)super.clone();
return cloned;
}
catch(CloneNotSupportedException e){
}
return null;
}
}深度克隆 public class CloneTest implements Cloneable{
private int[] ns; public CloneTest(int n){
ns=new int[n];
} public Object clone(){
try{
CloneTest cloned=(CloneTest)super.clone();
cloned.ns=this.ns.clone(); // 深度克隆
return cloned;
}
catch(CloneNotSupportedException e){
}
return null;
}
}
我想通过序列化的方式实现,有没有高手给段相关代码
包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。