/**
* 获取属性名数组
* */
public static List getFiledName(Object o){
Field[] fields=o.getClass().getDeclaredFields();
// String[] fieldNames=new String[fields.length];
List fieldNames=new ArrayList();
List fieldTypes=new ArrayList();
for(int i=0;i
Class fieldClazz =fields[i].getType(); // 得到field的class及类型全路径
if(fields[i].getName().equals("serialVersionUID")) continue;
if (fields[i].isSynthetic()) continue;// 是否动态加入属性
fieldNames.add(fields[i].getName());
fieldTypes.add(fieldClazz);
}
return fieldNames;
}
/**
* 获取属性类型
* */
public static List getFiledType(Object o){
Field[] fields=o.getClass().getDeclaredFields();
List fieldTypes=new ArrayList();
for(int i=0;i
Class fieldClazz =fields[i].getType(); // 得到field的class及类型全路径
if(fields[i].getName().equals("serialVersionUID")) continue;
if (fields[i].isSynthetic()) continue;// 是否动态加入属性
fieldTypes.add(fieldClazz);
}
return fieldTypes;
}
/**
* 根据属性名获取属性值
* */
public static Object getFieldValueByName(String fieldName, Object o) {
try {
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getter = "get" + firstLetter + fieldName.substring(1);
// Method method = o.getClass().getMethod(getter, new Class[] {});
// Object value = method.invoke(o, new Object[] {});
Method m = o.getClass().getMethod(getter);
Object value3 = (Object) m.invoke(o);
return value3;
} catch (Exception e) {
String bb= e.getCause().toString();
return null;
}
}
-===================================================
/**
* 根据属性名获取属性值
* */
private Object getFieldValueByName(String fieldName, Object o) {
try {
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getter = "get" + firstLetter + fieldName.substring(1);
Method method = o.getClass().getMethod(getter, new Class[] {});
Object value = method.invoke(o, new Object[] {});
return value;
} catch (Exception e) {
log.error(e.getMessage(),e);
return null;
}
}
/**
* 获取属性名数组
* */
private String[] getFiledName(Object o){
Field[] fields=o.getClass().getDeclaredFields();
String[] fieldNames=new String[fields.length];
for(int i=0;i
System.out.println(fields[i].getType());
fieldNames[i]=fields[i].getName();
}
return fieldNames;
}
/**
* 获取属性类型(type),属性名(name),属性值(value)的map组成的list
* */
private List getFiledsInfo(Object o){
Field[] fields=o.getClass().getDeclaredFields();
String[] fieldNames=new String[fields.length];
List list = new ArrayList();
Map infoMap=null;
for(int i=0;i
infoMap = new HashMap();
infoMap.put("type", fields[i].getType().toString());
infoMap.put("name", fields[i].getName());
infoMap.put("value", getFieldValueByName(fields[i].getName(), o));
list.add(infoMap);
}
return list;
}
/**
* 获取对象的所有属性值,返回一个对象数组
* */
public Object[] getFiledValues(Object o){
String[] fieldNames=this.getFiledName(o);
Object[] value=new Object[fieldNames.length];
for(int i=0;i
value[i]=this.getFieldValueByName(fieldNames[i], o);
}
return value;
} http://blog.csdn.net/linshutao/article/details/7693625=======================================================
public static void aa (Object model) throws SecurityException,
NoSuchMethodException, IllegalArgumentException,
IllegalAccessException, InvocationTargetException, InstantiationException{
Field[] fs = model.getClass().getDeclaredFields(); // 得到所有的fields
for(Field f : fs)
{
Class fieldClazz = f.getType(); // 得到field的class及类型全路径
if(fieldClazz.isPrimitive()) continue; //【1】 //判断是否为基本类型
if(fieldClazz.getName().startsWith("java.lang")) continue; //getName()返回field的类型全路径;
if(fieldClazz.isAssignableFrom(List.class)) //【2】
{
Type fc = f.getGenericType(); // 关键的地方,如果是List类型,得到其Generic的类型
if(fc == null) continue;
if(fc instanceof ParameterizedType) // 【3】如果是泛型参数的类型
{
ParameterizedType pt = (ParameterizedType) fc;
Class genericClazz = (Class)pt.getActualTypeArguments()[0]; //【4】 得到泛型里的class类型对象。
Map m=new HashMap();
m.put(f.getName(), genericClazz);
// Map m1 = prepareMap(genericClazz);
//
// m.putAll(m1);
}
}
}
}