import java.lang.reflect.Field; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Set; public class ReflectUtil { /** * 根据传入的class和参数,实例化对象</P> * 现只支持属性为String ,Interger,Double,Date类型的字段 * @param clazz * @param params * @param <T> * @return */ public static <T> T encpsulation(Class<T> clazz,Map<String,String> params){ Object obj=null; try { obj=clazz.newInstance(); setFileValue(obj,params); } catch (Exception e) { e.printStackTrace(); } return (T)obj; } // 把一个字符串的第一个字母大写 private static String getMethodName(String fildeName) throws Exception{ byte[] items = fildeName.getBytes(); items[0] = (byte) ((char) items[0] - 'a' + 'A'); return new String(items); } /** * 使用反射,给对象的某个属性赋值</P> * 现只支持属性为String ,Interger,Double,Date类型的字段 * @param obj * @param field * @param value */ public static void setFileValue(Object obj, Field field, String value){ try { String fieldType = field.getGenericType().toString(); if("class java.lang.Integer".equals(fieldType) || "int".equals(fieldType)){ Double dValue = Double.parseDouble(value);//处理excel读取数字,带".0" field.set(obj,dValue.intValue()); } else if("class java.lang.Double".equals(fieldType) || "double".equals(fieldType) ){ field.set(obj,Double.parseDouble(value)); } else if("class java.lang.Long".equals(fieldType) || "long".equals(fieldType) ){ Double dValue = Double.parseDouble(value);//处理excel读取数字,带".0" field.set(obj,dValue.longValue()); } else if("class java.lang.String".equals(fieldType)){ field.set(obj,value); }else if("class java.util.Date".equals(fieldType)){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); field.set(obj,format.parse(value)); } } catch (Exception e) { e.printStackTrace(); } } /** * 使用反射,给对象的某个属性赋值</P> * 现只支持属性为String ,Interger,Double,Date类型的字段 * @param obj * @param fieldName * @param value */ public static void setFileValue(Object obj, String fieldName, String value){ try { Field field = obj.getClass().getDeclaredField(fieldName); field.setAccessible(true); setFileValue(obj,field,value); } catch (NoSuchFieldException e) { e.printStackTrace(); } } /** * 使用反射,给对象的属性赋值</P> * 现只支持属性为String ,Interger,Double,Date类型的字段 * @param obj * @param params Map<fieldName,fieldValue> */ public static void setFileValue(Object obj,Map<String,String> params){ try { Set<String> keySet= params.keySet(); for (String key: keySet) { Field field = obj.getClass().getDeclaredField(key); field.setAccessible(true); setFileValue(obj,field,params.get(key)); } } catch (Exception e) { e.printStackTrace(); } } /** * 使用反射,获取对象的属性值</P> * @param obj * @param FileName */ public static Object getFileValue(Object obj,String FileName){ try { Field field = obj.getClass().getField(FileName); field.setAccessible(true); Object o = field.get(obj); return o; } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return null; } }
今天的文章
使用反射对对象赋值的影响_什么是先赋值后使用分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/60252.html