前言
最近在写框架,框架中需要通过反射获取实体的所有属性,在获取属性时,发现八大基本类型通过反射获取时,不会自动装箱,比方说int,通过反射得到的Class 是int.class而不是integer.class。
解决方式
在我的应用场景中,实体的属性极少出现八大基本类型,常出现的都是他们的包装类(Integer,Float等)。所以,我对基本类型采取了循环遍历数组的形式进行处理。这就涉及到一个Class数组,而为了避免Class数组的浪费,我采取了单例中的静态内部类的设计思想,通过JVM中类加载的特性进行了设计。代码如下:
静态内部类:
PackageBasicToClass
/**
* 将基本类型进行装箱
* @author 申劭明
* @date 2019/10/4
*/
private static class PackageBasicToClass{
/**
* 八大基本类型,与createModel中定义的class顺序相同
* @see #createModel(Class)
*/
private static Class<?>[] classes = new Class[]{int.class,long.class,float.class,double.class,
char.class,boolean.clas