使⽤java反射机制实现java的深拷贝
import www.doczj/doc/b77109065.html
import www.doczj/doc/b77109065.html
import www.doczj/doc/b77109065.html
import java.util.Date;
import www.doczj/doc/b77109065.html
er;
//这就是⼀个实现了深拷贝的反射
public class UseReflectColne2 {
public static Object clone(Object obj) throws SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException{
System.out.println("come on");
Class clazz = Class();
//获取⼀个⽆参的构造⽅法
Constructor constructor = Constructor();
Object result = wInstance();
//获取所有的field
Field[] fields = DeclaredFields();
if(fields != null)java反射的作用及应用场景
for(int i=0; i{
String fieldName = fields[i].getName();
String firstCharUpper = fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
String getFieldName = "get" + firstCharUpper;
String setFieldName = "set" + firstCharUpper;
System.out.println(getFieldName + " " + setFieldName);
Object date = Method(getFieldName).invoke(obj);
//这⾥排除掉⼋种基本类型以及包装类。
if(! Class().isPrimitive() && !(date instanceof Number) && !(date instanceof Boolean) && !(date instanceof String) && ! (date instanceof Date)){
//这⾥使⽤递归的形式,若当前对象中还有除掉的对象外,需要去深拷贝⼀份。
date = UseReflectColne2.clone(date);
}
}
return result;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论