/**
* 获取属性名数组
* */
public static List<String> getFiledName(Object o){
Field[] fields=o.getClass().getDeclaredFields();
// String[] fieldNames=new String[fields.length];
List<String> fieldNames=new ArrayList<String>();
List<Class> fieldTypes=new ArrayList<Class>();
for(int i=0;i<fields.length;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<Class> getFiledType(Object o){
Field[] fields=o.getClass().getDeclaredFields();
List<Class> fieldTypes=new ArrayList<Class>();
for(int i=0;i<fields.length;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<fields.length;i++){
- System.out.println(fields[i].getType());
- fieldNames[i]=fields[i].getName();
- }
- return fieldNames;
- }
-
-
- 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<fields.length;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<fieldNames.length;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<String, Class> m=new HashMap<String, Class>();
m.put(f.getName(), genericClazz);
// Map<String, Class> m1 = prepareMap(genericClazz);
//
// m.putAll(m1);
}
}
}
}