publicObjectcopyPerson(Objectobject)throwsException{Class>classType=object.getClass();Constructor>constructor=classType.getConstructor(newClass[]{});ObjectobjectInsta...
public Object copyPerson(Object object) throws Exception{
Class> classType = object.getClass();
Constructor> constructor = classType.getConstructor(new Class[]{});
Object objectInstance = constructor.newInstance(new Object[]{}) ;
Field[] objectField = classType.getDeclaredFields();
for(Field field : objectField){
String fieldString = field.getName();
String firstChar = fieldString.substring(0, 1).toUpperCase();
String methodGet = "get" + firstChar + fieldString.substring(1, fieldString.length());
String methodSet = "set" + firstChar + fieldString.substring(1, fieldString.length());
Method methodGetAge = classType.getMethod(methodGet, new Class[]{});
Method methodSetAge = classType.getMethod(methodSet, new Class[]{field.getType()});
Object value = methodGetAge.invoke(objectInstance, new Object[]{});
methodSetAge.invoke(objectInstance, new Object[]{value});
System.out.println(value);
}
return objectInstance;
}
我想给这个函数传入对象 的构造函数带参数的构造函数,,比如,Person person = new Person(3, "dfas", 654);,,,,,copyPerson(person),或copyPerson(new Person(3."dfas", 654))可这个构造函数的参数怎么也传不进,里面的值始终为空。。,,怎么写才能传进去。
你还是没回答我问题呀,Person person = new Person(3, "dfas", 654),我的问题是person对象里有值,,如何用反射把它取出来,Constructor> constructor = classType.getConstructor(new Class[]{});
Object objectInstance = constructor.newInstance(new Object[]{}) ;如果需要在反射的里面再次构造,再传值,值我都知道了,再传再取又有什么意义呢,我想写一个通用的方法,比如public Object copyPerson(Object object) throws Exception,当我构造一个对象时,直接把这个对象传进去,就能直接通过反射把这个对象的值取出来。
展开