利用反射操作泛型II-----
GenericArrayType接口 TypeVariable接口 WildcardType接口 Type及其及接口的来历
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
1. java.lang.reflect. GenericArrayType接口
1). GenericArrayType类型接口基本知识
(1). GenericArrayType接口的位置
GenericArrayType位于java.lang.reflect反射子包中。
(2). GenericArrayType接口类型的含义
表示泛型数组类型。比如:void method(ArrayList<String>[] al){…}
【注意】<>不能出现在数组的初始化中,即new数组之后不能出现<>,否则javac无法通过。但是作为引用变量或者方法的某个参数是完全可以的。
(3). GenericArrayType接口的源码
public interface GenericArrayType extends Type {
Type getGenericComponentType();
}
2). GenericArrayType接口的唯一的方法
获取泛型数组中元素的类型
[1]. 源码声明:Type getGenericComponentType();
【注意】无论从左向右有几个[]并列,这个方法仅仅脱去最右边的[]之后剩下的内容就作为这个方法的返回值。
[2]. 返回值类型:Type
【分析】为什么返回值类型是Type?
public static <E> E methodV(
String[] p1,
E[] p2,
ArrayList<E>[] p3,
E[][] p4){}
{1}. 对于String[],通过getComponentType()返回之后,脱去最右边的[]之后,剩余的类型是String。因此对这个参数的返回类型是Class
{2}. 对于E[],通过getComponentType()返回之后,脱去最右边的[]之后,剩余的类型是E。因此对这个参数的返回类型是TypeVariable
{3}. 对于ArrayList<E>[],通过getComponentType()返回之后,脱去最右边的[]之后,剩余的类型是ArrayList<E>。因此对