Java---通过属性名反射获取get和set方法

https://blog.csdn.net/weixin_39800144/article/details/79012369

package cn.microvideo.aud.rate.gantry.util;

import java.lang.reflect.Method;
import java.math.BigDecimal;

/**
 * Description: 
* date: 2020/2/29 10:00
* * @author 38050
*/ public class ReflectUtil { /** * 根据属性,获取get方法 * * @param ob 对象 * @param name 属性名 * @return * @throws Exception */ public static Object getGetMethod(Object ob, String name) throws Exception { Method[] m = ob.getClass().getMethods(); for (int i = 0; i < m.length; i++) { if (("get" + name).toLowerCase().equals(m[i].getName().toLowerCase())) { return m[i].invoke(ob); } } return null; } /** * 根据属性,拿到set方法,并把值set到对象中 * * @param obj 对象 * @param clazz 对象的class * @param typeClass * @param value * 示例: DataReq req=new DataReq(); * String field2 = "start"; 属性名 * ReflectUtil.setValue(req,DataReq.class,field2,DataReq.class.getDeclaredField(field2).getType(),"汪汪"); * * */ public static void setValue(Object obj, Class clazz, String filedName, Class typeClass, Object value) { filedName = removeLine(filedName); String methodName = "set" + filedName.substring(0, 1).toUpperCase() + filedName.substring(1); try { Method method = clazz.getDeclaredMethod(methodName, new Class[] { typeClass }); method.invoke(obj, new Object[] { getClassTypeValue(typeClass, value) }); } catch (Exception ex) { ex.printStackTrace(); } } /** * 通过class类型获取获取对应类型的值 * * @param typeClass class类型 * @param value 值 * @return Object */ private static Object getClassTypeValue(Class typeClass, Object value) { if (typeClass == int.class || value instanceof Integer) { if (null == value) { return 0; } return value; } else if (typeClass == short.class) { if (null == value) { return 0; } return value; } else if (typeClass == byte.class) { if (null == value) { return 0; } return value; } else if (typeClass == double.class) { if (null == value) { return 0; } return value; } else if (typeClass == long.class) { if (null == value) { return 0; } return value; } else if (typeClass == String.class) { if (null == value) { return ""; } return value; } else if (typeClass == boolean.class) { if (null == value) { return true; } return value; } else if (typeClass == BigDecimal.class) { if (null == value) { return new BigDecimal(0); } return new BigDecimal(value + ""); } else { return typeClass.cast(value); } } /** * 处理字符串 如: abc_dex ---> abcDex * * @param str * @return */ public static String removeLine(String str) { if (null != str && str.contains("_")) { int i = str.indexOf("_"); char ch = str.charAt(i + 1); char newCh = (ch + "").substring(0, 1).toUpperCase().toCharArray()[0]; String newStr = str.replace(str.charAt(i + 1), newCh); String newStr2 = newStr.replace("_", ""); return newStr2; } return str; } }

 

你可能感兴趣的:(java菜鸟苦逼前进史)