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挂载文件修改生效
