一个关于泛型的问题,一直弄不明白。如下:
1、Class z1 = Integer.class;------√
2、Class<Integer> z1 = Integer.class;------√
3、Class<String> z1 = Integer.class;// 编译报错
原因是Integer.class
会使得泛型T
自适应类型实参为Integer
,可若是同时指定T
的类型实参为String
,前后不符,就会编译报错。
我想知道这种自适应泛型类型实参的原理是什么?是如何实现的?
找了一些资料暂无线索,而 Class<T>
类的源码比较复杂,故暂无头绪。
特来向大家请教!!