群里一个伙计的需求,最后我提出了这种解决方案,不过他觉得多写俩括号增加了调用方的难度。还是先记下来吧,有时间看看还能不能再改造。   1、直接获取时获取不到的,类型被虚拟机擦除了

2、利用子类实现父类的泛型是可以的

3、这个地方就是借助了这一原理

利用了匿名内部类

package test;
/**
* author : liuyx
*/
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

public class Main {


public static void main(String[] args) {
//下边这组大括号非常重要
List<String> list = new ArrayList<String>() {};
System.out.println(getActualType(list,0));

}

public static String getActualType(Object o,int index) {
Type clazz = o.getClass().getGenericSuperclass();
ParameterizedType pt = (ParameterizedType)clazz;
return pt.getActualTypeArguments()[index].toString();
}
}


运行结果:

获取List对象的泛型类(原创)_泛型