复制熟悉(包括父类)

web_backend_develope
chenlw 9 years ago
parent 12661a53d3
commit b1b25fd081

@ -6,10 +6,15 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.log4j.Logger;
import com.fasterxml.jackson.databind.PropertyNamingStrategy.UpperCamelCaseStrategy;
public class BeanCopy {
@SuppressWarnings("static-access")
public static Logger log = Configs.DAILY_ROLLING_LOGGER.getLogger(BeanCopy.class);
/**
* @param source
* @param dst
@ -53,6 +58,35 @@ public class BeanCopy {
}
public static void copyField(Object src, Object dst,String... filter) {
List<String> filters = Arrays.asList(filter);
List<Field> fields = new ArrayList<Field>();
Class<?> classobj = src.getClass();
if (null != classobj) {
Field[] fs = classobj.getDeclaredFields();
for (Field field : fs) {
field.setAccessible(true);
fields.add(field);
}
fields = findFatherField(classobj, fields);
}
for (Field field : fields) {
if (filters.contains(field.getName())) {
continue;
}
// dst obj's property set value
try {
field.set(dst, field.get(src));
} catch (SecurityException e) {
log.error(field.getName() + " is unsafe : SecurityException");
} catch (IllegalArgumentException e) {
log.error(field.getName() + " is inexist or null or OutOfRange : ArgumentException ");
} catch (IllegalAccessException e) {
log.error(field.getName() + " Access is false : AccessException");
}
}
}
private static void fatherCopyChild(Object father, Object dst, String... params) throws Exception{
List<String> filter = new ArrayList<String>();
filter.addAll(Arrays.asList(params));
@ -74,6 +108,21 @@ public class BeanCopy {
}
}
private static List<Field> findFatherField(Class<?> classObj, List<Field> fields) {
Class<?> classz = classObj.getSuperclass();
if (null != classz) {
Field[] field_array = classz.getDeclaredFields();
if (field_array.length > 0) {
for (Field field : field_array) {
field.setAccessible(true);
fields.add(field);
}
findFatherField(classz,fields);
}
}
return fields;
}
private static String upperHeadChar(String in) {
String head = in.substring(0,1);
return head.toUpperCase()+in.substring(1, in.length());

Loading…
Cancel
Save