クラスの属性値を別のクラスの同じ属性にコピー
1521 ワード
コードには高度なコードがたくさんありますが、同じ属性の値を別のクラスにコピーすることを示します.たとえば、AクラスにString name、int scoreがあります.BクラスにはString name、int score、String schooleがあります.今、Aクラスのnameとscoreの値をBにコピーしたいと思っています.次の方法を使って、コードが上手だと思います.私たちは勉強します.
public static void copy(Object source, Object target) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InvocationTargetException {
Class sourceClass = source.getClass();// Class
Class targetClass = target.getClass();// Class
Field[] sourceFields = sourceClass.getDeclaredFields();// Class
Field[] targetFields = targetClass.getDeclaredFields();// Class
for(Field sourceField : sourceFields){
String name = sourceField.getName();//
Class type = sourceField.getType();//
String methodName = name.substring(0, 1).toUpperCase() + name.substring(1);
Method getMethod = sourceClass.getMethod("get" + methodName);// get
Object value = getMethod.invoke(source);// get
for(Field targetField : targetFields){
String targetName = targetField.getName();//
if(targetName.equals(name)){
Method setMethod = targetClass.getMethod("set" + methodName, type);// set
setMethod.invoke(target, value);// set
}
}
}
}