快捷搜索: 王者荣耀 脱发

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面试题解析+核心总结学习笔记+最新讲解视频】](

)**

经验分享 程序员 微信小程序 职场和发展