实例化泛型对象

jdk1.7之后所提供的类ParameterizedType可以实现

getGenericSuperclass():调用者是[泛型所在对象]的Class对象,即获取到的clz一定是有泛型的。

getActualTypeArguments():得到的是一个存放泛型的数组,用第几个就取第几个。

private static void query(MyClass myClass){
    Class clz = myClass.getClass();
    Type genericSuperclass = clz.getGenericSuperclass();
    ParameterizedType parameterizedType = (ParameterizedType)genericSuperclass;
    Class clazz = (Class) parameterizedType.getActualTypeArguments()[1];
    V v = (V) clazz.newInstance();
    //....
}

你可能感兴趣的:(Java)