BeanUtils源码解析
创始人
2024-05-22 00:53:56
0

🍁 作者:知识浅谈,CSDN博客专家,阿里云签约博主,InfoQ签约博主,华为云云享专家,51CTO明日之星
📌 擅长领域:全栈工程师、爬虫、ACM算法
💒 公众号:知识浅谈

BeanUtils源码解析总结
🤞这次都给他拿下🤞

正菜来了⛳⛳⛳

🎈BeanUtils源码相关函数

这个BeanUtils类的主要作用是:JavaBeans 的静态便捷方法:用于实例化 bean、检查 bean 属性类型、复制 bean 属性等。

🍮Log logger

含义:这个成员变量使用于定义一个对象,用于类中日志的生成。
通过往底层查找,最后返回的事一个Log4jLog对象。
private static final Log logger = LogFactory.getLog(BeanUtils.class);

🍮Set> unknownEditorTypes

含义:这个用于保存未知的编辑器类型。
private static final Set> unknownEditorTypes = Collections.newSetFromMap(new ConcurrentReferenceHashMap<>(64));

🍮DEFAULT_TYPE_VALUES

含义:这个变量的含义就是用与存储默认的类型的值,用于存储相应的类型以及对应的默认值,如:int 默认是0,byte默认的为(byte)0
private static final Map, Object> DEFAULT_TYPE_VALUES;

🍮静态代码块

含义:这个函数的含义就是把不同的类型已经其默认的值添加到map中,并调用Collections.unmodifiableMap(values),把创建的map转化为一个不可修改的map,unmodifiableMap()这个函数会重新创建一个UnmodifiableMap类型的把values中的键值对传进去。

static {Map, Object> values = new HashMap<>();values.put(boolean.class, false);values.put(byte.class, (byte) 0);values.put(short.class, (short) 0);values.put(int.class, 0);values.put(long.class, (long) 0);DEFAULT_TYPE_VALUES = Collections.unmodifiableMap(values);
}

🍮static T instantiate(Class clazz)

含义:使用其无参数构造函数实例化类的便捷方法,函数的开头显示一个Assert.notnull 断言表示对象非空,然后再根据类型创建一个指定类的对象。

public static  T instantiate(Class clazz) throws BeanInstantiationException {Assert.notNull(clazz, "Class must not be null");if (clazz.isInterface()) {throw new BeanInstantiationException(clazz, "Specified class is an interface");}try {return clazz.newInstance();}catch (InstantiationException ex) {throw new BeanInstantiationException(clazz, "Is it an abstract class?", ex);}catch (IllegalAccessException ex) {throw new BeanInstantiationException(clazz, "Is the constructor accessible?", ex);}
}

🍮static T instantiateClass(Class clazz)

使用其“主”构造函数(对于 Kotlin 类,可能声明了默认参数)或其默认构造函数(对于常规 Java 类,需要标准的无参数设置)实例化一个类,其内部调用的函数instantiateClass也是调用构造器返回一个实例。

public static  T instantiateClass(Class clazz) throws BeanInstantiationException {
Assert.notNull(clazz, "Class must not be null");if (clazz.isInterface()) {throw new BeanInstantiationException(clazz, "Specified class is an interface");}try {return instantiateClass(clazz.getDeclaredConstructor());}catch (NoSuchMethodException ex) {Constructor ctor = findPrimaryConstructor(clazz);if (ctor != null) {return instantiateClass(ctor);}throw new BeanInstantiationException(clazz, "No default constructor found", ex);}catch (LinkageError err) {throw new BeanInstantiationException(clazz, "Unresolvable class definition", err);}
}

🍮Constructor findPrimaryConstructor(Class clazz)

含义:这个函数主要是通过反射的方法找到传入的clazz这个类中有多少构造函数,如无参构造函数,不同参数和个数的构造函数。

public static  Constructor findPrimaryConstructor(Class clazz) {Assert.notNull(clazz, "Class must not be null");if (KotlinDetector.isKotlinReflectPresent() && KotlinDetector.isKotlinType(clazz)) {Constructor kotlinPrimaryConstructor = KotlinDelegate.findPrimaryConstructor(clazz);if (kotlinPrimaryConstructor != null) {return kotlinPrimaryConstructor;}}return null;}

关于通过反射获取类中局部变量和方法的函数就不再多赘述,最常用的的就是 BeanUtils中的opyProperties方法,这个方法的作用就是把源对象中的向量拷贝到des对象中去。
BeanUtils.copyProperties(src,des);

🍚总结

以上是关于BeanUtils的简单总结,希望有所帮助,Written By 知识浅谈

相关内容

热门资讯

小学生庆元旦联欢会主持词 小学生庆元旦联欢会主持词范文(精选5篇)  主持词要注意活动对象,针对活动对象写相应的主持词。在现今...
新年升旗仪式致辞 新年升旗仪式致辞(精选14篇)  在现实生活或工作学习中,说到致辞,大家肯定都不陌生吧,致辞具有思路...
表演半台词 表演三句半台词  敲锣打鼓走圆场  1:锣鼓一响好心情,  2:我们漫游动画城;  3:表演一个三句...
毕业30周年同学聚会主持词 毕业30周年同学聚会主持词范文  老同学聚会,一桌饭菜,谈论着当年的同学情,好不快活呀,往日是多么的...
结训典礼主持词 结训典礼主持词范文  主持词是主持人在节目进行过程中用于串联节目的串联词。在当今中国社会,各种集会中...
集团董事长新年的经典致辞 集团董事长新年的经典致辞(通用13篇)  在平平淡淡的学习、工作、生活中,大家对致辞都不陌生吧,致辞...
郭德纲于谦相声《李菁表妹》台... 郭德纲于谦相声《李菁表妹》台词  郭德纲,1973年1月18日出生于天津,华语相声演员,电视、电影演...
教师节学生主持稿 教师节学生主持稿  教师“不仅仅是一份工作、一个职业,而是一项需要用一生的情感去拥抱的事业,更是一种...
主持词开场白夏天 主持词开场白夏天(精选5篇)  在现实社会中,很多情况下我们都需要用到开场白,独具匠心的开场白,才能...
幼儿园家长会全过程主持词 幼儿园家长会全过程主持词  主持词要把握好吸引观众、导入主题、创设情境等环节以吸引观众。在当今不断发...
播音主持岗位实践报告范文8篇 播音主持岗位实践报告范文 第一篇时间过的很快,转眼间,我到临沂银雀山汉墓竹筒博物馆工作,已经快一年的...
爱国活动主持词 爱国活动主持词范文  主持人在台上表演的灵魂就表现在主持词中。我们眼下的社会,主持词在各种活动中起到...
“我的祖国”演讲比赛主持词 “我的祖国”演讲比赛主持词  主持词要注意活动对象,针对活动对象写相应的主持词。在当下这个社会中,越...
舞蹈节目主持词串词 舞蹈节目主持词串词范文(精选8篇)  主持词需要富有情感,充满热情,才能有效地吸引到观众。在当下的社...
我是歌手歌唱比赛主持词 我是歌手歌唱比赛主持词  小歌手主持词篇一  A:尊敬的各位领导  B:敬爱的老师,亲爱的同学们  ...
中秋节联欢晚会主持词 中秋节联欢晚会主持词(精选11篇)  主持词要注意活动对象,针对活动对象写相应的主持词。我们眼下的社...
初中新生开学欢迎词 初中新生开学欢迎词2017各位初一年全体同学石狮二中敞开胸怀迎接你们,真诚地欢迎你们加入这个大家庭,...
品鉴会主持词 品鉴会主持词  借鉴诗词和散文诗是主持词的一种写作手法。随着中国在不断地进步,各种集会的节目都通过主...
新年半台词 新年三句半台词  三句半是一种中国民间群众传统曲艺表演形式。每段内容有三长句一半句。一般由4人演出,...
消夏文艺晚会的主持词 消夏文艺晚会的主持词(精选11篇)  主持词是主持人在节目进行过程中用于串联节目的串联词。在各种集会...