前言
用反射可以说很牛掰也很有范,框架底的层也用的很多,但是我最近用的时候,很慢,经过排查问题定位到反射,查官网,发现,反射在千条一下,性能 影响可以忽略不计,大于这个阈值就极其慢,所以说所有的技术都有一定的使用范围,选型很重要,谨慎评估,慎重选择,导出Excel10万加,动态去表头key,根据key 取值,把javaBean 转换为map
代码分析
package com.XXX.util;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
/**
* @Author windwardbird
* @time 2020/8/19 20:12
* @describeOfFunction:
*/
public class BeanToMap {
public static Map<String,Object> javaBeanToMap(Object bean) throws Exception{
Map<String,Object> map = new HashMap<>();
//获取JavaBean的描述器
if(null==bean) bean =""; // 防空处理
BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass(),Object.class);
//获取属性描述器
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
//对属性迭代
for (PropertyDescriptor property : pds) {
String propertyName = property.getName();//属性名称
Method m = property.getReadMethod(); //属性值,用getter方法获取
Object properValue = m.invoke(bean);//用对象执行getter方法获得属性值
map.put(propertyName, properValue); //把属性名-属性值 存到Map中
}
return map;
}
}