? getClass().getGenericSuperclass()方法
发布人:shili8
发布时间:2023-12-31 18:25
阅读次数:79
getClass().getGenericSuperclass()方法是用于获取当前类的直接父类的泛型类型。通过这个方法,我们可以在运行时获取父类的泛型信息,从而实现一些动态的操作。
下面是一个简单的示例代码:
javaimport java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; public class GenericClass{ public GenericClass() { Type type = getClass().getGenericSuperclass(); if (type instanceof ParameterizedType) { ParameterizedType parameterizedType = (ParameterizedType) type; Type[] actualTypeArguments = parameterizedType.getActualTypeArguments(); if (actualTypeArguments.length >0) { Class> genericClass = (Class>) actualTypeArguments[0]; System.out.println("泛型类型为:" + genericClass.getName()); } } } } public class SubClass extends GenericClass { public static void main(String[] args) { new SubClass(); } }
在上面的示例中,我们定义了一个泛型类GenericClass,并在其构造方法中通过getClass().getGenericSuperclass()方法获取了父类的泛型类型。然后我们判断父类的泛型类型是否是ParameterizedType,如果是的话,就可以通过getActualTypeArguments()方法获取到实际的泛型参数类型。
在SubClass中,我们继承了GenericClass,并指定了泛型类型为String。当我们创建SubClass的实例时,会输出"泛型类型为:java.lang.String"。
通过这个方法,我们可以在运行时获取到父类的泛型信息,从而实现一些动态的操作,比如根据泛型类型来进行不同的处理逻辑。