public static <T> T clone(T te) {
//如何克隆 te ?
}如何实现 Object.clone 的功能?
//如何克隆 te ?
}如何实现 Object.clone 的功能?
解决方案 »
- Java的HashMap类型,如何指定用户自定义的hash函数呢?
- JAVA 控制台创建GUI程序如何设置窗体背景?
- 大家 看下这个小线程程序有引起死锁的潜在可能吗??
- 超量的 文件处理
- 有没有人升级了XP sp3?
- 关于用iText生成PDF文档的问题,在线等,请指教,谢谢。
- 一个简单的java 程序段,请讲解
- jdk1.3正常显示的中文,在1.4下不能显示
- scjp----是否有同感?
- dickmi(我用心感受世界) 请进来领分,谢谢你的热心帮助
- 在线急求集合问题
- java 栈内存,堆内存,方法区,常量池,静态去到底有什么关联, 方法区,常量池,静态区又存在哪里啊,栈中,还是另外的一块空间?
public static <T> T clone(Object te) {
//利用发射te.getClass().newInstance();
}
或
//传递时用obj.getClass()
public static <T> T clone(Class te) {
//te.newInstance();
}
这样写 从理论上讲是 取了 te的class 类型然后实例化,这样写 不会影响 传入的 Object te 这个引用指向的内存的对象吗?确认后结贴!
String getName()
以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称
if(obj==null){
return null;
}
Object newObject=null;
Class<?> clazz=obj.getClass();
if(isBaseData(clazz)){
return cloneBasicData(obj);
}else{
try {
if(clazz.isArray()){
Object newArray=Array.newInstance(clazz.getComponentType(),Array.getLength(obj));
for(int i=0;i<Array.getLength(obj);i++){
Object temp_obj=getElement(obj,i);
setElement(newArray,i,cloneObject_recursion(temp_obj));
}
return newArray;
}
newObject=clazz.newInstance();
}catch(InstantiationException e){
e.printStackTrace();
}catch(IllegalAccessException e){
e.printStackTrace();
}
Field[] fields=clazz.getDeclaredFields();
for(int i=0;i<fields.length;i++){
Object property=getProperty(obj,fields[i]);
setProperty(newObject,fields[i],cloneObject_recursion(property));
}
}
return newObject;
}