在编程过程中,有时会出现这样一种情况,在查询无结果时我们需要给实体赋默认值,此时可以使用一个工具方法
public static <E> void inChange(Object o) throws Exception {
Object o = new TModel();
Class<? extends Object> clas = o.getClass(); //获取类的class
Method[] methods = clas.getMethods(); //获取类中的方法(类中自定义方法都是public)
for(Method m : methods) {
String methodName = m.getName(); //获取方法名称
// System.out.println(methodName);
if(methodName.startsWith("set")) { //判断方法名称,整个操作只和set和get有关
String getMethod = methodName.substring(3); //截取除set外的其余部分
// System.out.println(getMethod);
Method method = clas.getMethod("get" + getMethod); //得到这个属性的get方法
Object invoke = method.invoke(o); //因为get方法是没有参数的,所以直接传obj进去运行方法
if(invoke == null) {
Type[] genericParameterTypes = m.getGenericParameterTypes(); //获取set方法的参数类型
if(genericParameterTypes[0] == String.class) { //匹配参数类型
m.invoke(o, ""); //如果是String类型就赋值“”
}else if(genericParameterTypes[0] == Float.class) {
m.invoke(o, Float.valueOf("0.0")); //如果是Float类型就赋值0.0
}else if(...)
... //根据需要加入其他类型数据
}
}
}
System.out.println(o.toString());
}