📜  Java中的类 getGenericSuperclass() 方法和示例(1)

📅  最后修改于: 2023-12-03 15:16:34.045000             🧑  作者: Mango

Java中的类 getGenericSuperclass() 方法和示例

在Java中,每个类都有一个父类(除了Object类),可以使用getSuperclass()方法来获取该类的父类。但是,对于泛型类的情况,只使用getSuperclass()方法并不能得到期望的泛型信息。这时就需要使用getGenericSuperclass()方法来获取泛型信息。

getGenericSuperclass()方法的定义

getGenericSuperclass()方法是Class类中的一个方法,具体定义如下:

public Type getGenericSuperclass()

其中,getGenericSuperclass()方法返回表示带有泛型参数的父类的Type对象。

示例

下面的示例展示了如何使用getGenericSuperclass()方法来获取泛型信息。

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class Example<T> {
    private Class<T> type;

    public Example() {
        Type genericSuperclass = getClass().getGenericSuperclass();
        ParameterizedType parameterizedType = (ParameterizedType)genericSuperclass;
        this.type = (Class<T>)parameterizedType.getActualTypeArguments()[0];
    }

    public void printType() {
        System.out.println(type.getName());
    }

    public static void main(String[] args) {
        Example<String> example = new Example<String>() {};
        example.printType(); // 输出 "java.lang.String"
    }
}

在上面的示例中,Example类是一个泛型类。在其构造方法中,首先通过getClass().getGenericSuperclass()方法获取带有泛型参数的父类的Type对象。然后,将该对象转换成ParameterizedType类型,再通过getActualTypeArguments()[0]方法获取实际的类型参数。最后,将该类型参数转换成Class<T>类型,从而得到泛型类型。

main方法中,创建了一个Example类的实例,并调用其printType方法,从而输出了泛型类型。

以上就是关于Java中的类getGenericSuperclass()方法和示例的介绍。