1、根据对象获得所有字段的值
- public static void method(Object obj) {
- try {
- Class clazz = obj.getClass();
- Field[] fields = obj.getClass().getDeclaredFields();//获得属性
- for (Field field : fields) {
- PropertyDescriptor pd = new PropertyDescriptor(field.getName(),
- clazz);
- Method getMethod = pd.getReadMethod();//获得get方法
- Object o = getMethod.invoke(obj);//执行get方法返回一个Object
- System.out.println(o);
- }
- } catch (SecurityException e) {
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- } catch (IntrospectionException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- }
- }
2、通过对象和具体的字段名字获得字段的值
- public static void method(Object obj, String filed) {
- try {
- Class clazz = obj.getClass();
- PropertyDescriptor pd = new PropertyDescriptor(filed, clazz);
- Method getMethod = pd.getReadMethod();//获得get方法
- if (pd != null) {
- Object o = getMethod.invoke(obj);//执行get方法返回一个Object
- System.out.println(o);
- }
- } catch (SecurityException e) {
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- } catch (IntrospectionException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- }
--------------------------------
---------------------
- } //根据对象获取所有字段的值
protected <S extends IdEntity> void setFieldOfStringType(S entity, String[] fields, String oldValue, String newValue) {
if (entity == null || fields == null || fields.length == 0) {
return;
}
Class<?> clazz = entity.getClass();
String value;
PropertyDescriptor pd;
try {
for (String field : fields) {
pd = new PropertyDescriptor(field, clazz);
if (pd.getPropertyType() != String.class) {
continue;
}
value = (String) pd.getReadMethod().invoke(entity);
if (value != oldValue) {
continue;
}
pd.getWriteMethod().invoke(entity, newValue);
}
} catch (Exception e) {
e.printStackTrace();
}
}
protected <S extends IdEntity> void setCreateTimeAndUpdatedTime(S entity, String createdTimeField,
String updatedTimeField) {
if (entity == null) {
return;
}
Class<?> clazz = entity.getClass();
try {
PropertyDescriptor createdTimeProperty = new PropertyDescriptor(createdTimeField, clazz);
PropertyDescriptor updatedTimeProperty = new PropertyDescriptor(updatedTimeField, clazz);
if (createdTimeProperty.getPropertyType() != Date.class
|| updatedTimeProperty.getPropertyType() != Date.class) {
return;
}
if (entity.getId() == null) {
createdTimeProperty.getWriteMethod().invoke(entity, new Date());
}
updatedTimeProperty.getWriteMethod().invoke(entity, new Date());
} catch (Exception e) {
e.printStackTrace();
}
}