通过反射获取对象某个属性的值
public class DataLinkAspect {
private static String[] types = { "java.lang.Integer", "java.lang.Double", "java.lang.Float", "java.lang.Long",
"java.lang.Short", "java.lang.Byte", "java.lang.Boolean", "java.lang.Char", "java.lang.String", "int",
"double", "long", "short", "byte", "boolean", "char", "float" };
private static String LIST = "java.util.List";
private static String SPLIT_FLAG = ",";
public static List<String> getFieldsValue(Object obj, String pkField) throws Exception {
String typeName = obj.getClass().getTypeName();
List<String> list = new ArrayList<String>();
// 判断是否是上面定义的类型,如果是则直接增加返回
for (String t : types) {
if (t.equals(typeName)) {
list.add(String.valueOf(obj));
return list;
}
}
if (LIST.equals(typeName) || obj instanceof List) {
List<Object> listObj = (List<Object>) obj;
for (Object object : listObj) {
list.addAll(getFieldsValue(object,pkField));
}
return list;
}
Class<? extends Object> objClass = obj.getClass();
while(objClass !=null) {
Field[] declaredFields = objClass.getDeclaredFields();
for (Field field : declaredFields) {
if (StringUtils.equals(pkField, field.getName())) {
field.setAccessible(true);
list.add(String.valueOf(field.get(obj)));
return list;
}
}
objClass = objClass.getSuperclass();
}
return list;
}
}