HashMap转JavaBean,Java入门你值得拥有
PropertyDescriptor[] pds = b.getPropertyDescriptors(); for (PropertyDescriptor pd : pds) { //得到属性的setter方法 Method setter = pd.getWriteMethod(); //得到key名字和属性名字相同的value设置给属性 setter.invoke(obj, map.get(pd.getName())); } return obj;
}
public static T populate(Map<String, Object> map, Class clz) throws Exception {
T obj = clz.newInstance(); //拿到 BeanInfo BeanInfo beanInfo = Introspector.getBeanInfo(clz); //通过 beaninfo 获取所有的描述器 PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor pd : pds) { //获取属性的名字 String name = pd.getName(); //判断是否有这个属性 if (map.containsKey(name)){ //获取属性的 写的方法 Method wMethod = pd.getWriteMethod(); if (pd.getPropertyType() == int.class){ wMethod.invoke(obj,Integer.valueOf(map.get(name).toString())); }else if (pd.getPropertyType() == double.class){ wMethod.invoke(obj,Double.valueOf(map.get(name).toString())); }else { wMethod.invoke(obj,map.get(name)); } } } return obj;
}
### 2、方式一升级款
//map转换成Bean,只要Map键和JavaBean属性名一致即可,解决mapToBean因为单个首字母大写,映射找不到属性的问题
public static <T, V> T mapToBeanByField(Map<String,V> map,Class clz) throws Exception{
T obj = clz.newInstance(); Field field = null; for(String key : map.keySet()) { field = obj.getClass().getDeclaredField(key); field.setAccessible(true); field.set(obj, map.get(key)); } return obj;
}
### 3、方式二
/**
* 实现键值对集合中将对应的键值,赋值给目标对象的属性 * 前提:键的值必须和目标对象的属性名一致,基本数据类型必须是字符串格式!!! * 可以实现任意类型的赋值
-
@param map 键值对集合 @param o 要赋值的目标对象
*/
public static Object copyValue(HashMap<String,Object> map,Object o){
Class c=o.getClass(); //创建目标对象的class对象 Field[] fields=c.getDeclaredFields(); //得到目标对象的所有属性 for (Field f : fields) { //遍历属性集合 if(map.get(f.getName())!=null){//如果属性名在集合中,有对应的键值对 进入赋值处理 String methodName="set"+f.getName().substring(0,1).toUpperCase()+f.getName().substring(1); //拼接set方法的名字
总结
互联网大厂比较喜欢的人才特点:对技术有热情,强硬的技术基础实力;主动,善于团队协作,善于总结思考。无论是哪家公司,都很重视高并发高可用技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。
**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](
)**
于所有人,相信经过一些面试,大家都会有这些感触。
**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](
)**
下一篇:
docker挂载文件修改生效