Type是所有类型的父接口,它有四个子接口和一个实现类
下面来看这些子接口和子类所代表的类型
Class表示的是原始类型。Class类的对象表示JVM中的一个类或者接口,每个java类在JVM都表现为一个Class对象。可以通过“类名.Class”、“对象.getClass()”或者Class.forName("类名")等方法获取到Class对象。数组也被映射为Class对象,所有元素类型相同且维度相同的数组都共享同一个Class对象。
ParameterizedType表示的是参数化类型,例如List<String>、Map<Integer,String>、Service<User>这种带有泛型的类型。ParameterizedType接口中常用的方法有三个,分别是:
Type getRawType() 返回参数化类型中的原始类型,例如List<String>的原始类型为List
Type[] getActualTypeArguments() 获取参数化类型的类型变量或者是实际类型列表,例如Map<Integer, String>的实际泛型列表Integer和String。改列表的所有类型都是Type,也即是说,可能存在多层嵌套的情况。
Type getOwnerType() 返回是类型所属的类型,例如存在A<T>,其中定义了内部类InnerA<T>,则InnerA<T>的所属类型是A<T>,如果是顶层类型则返回null,这种关系比较常见的是Map<K, V>接口与Map.Entry<K, V>接口,Map<K,V&g