Java

java怎么获取泛型的实际类型

小亿
214
2024-05-28 19:48:09
栏目: 编程语言

在 Java 中,由于泛型擦除的特性,无法直接获取泛型的实际类型。不过可以通过反射来获取泛型的实际类型。以下是一个示例代码:

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

public class GenericClass<T> {

    private Class<T> type;

    public GenericClass() {
        Type superClass = getClass().getGenericSuperclass();
        if (superClass instanceof ParameterizedType) {
            ParameterizedType parameterizedType = (ParameterizedType) superClass;
            Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
            if (actualTypeArguments.length > 0 && actualTypeArguments[0] instanceof Class) {
                this.type = (Class<T>) actualTypeArguments[0];
            }
        }
    }

    public Class<T> getType() {
        return type;
    }

    public static void main(String[] args) {
        GenericClass<String> genericClass = new GenericClass<>();
        System.out.println(genericClass.getType()); // 输出 class java.lang.String
    }
}

在上面的示例中,我们通过反射获取了泛型的实陷类型,并将其存储在 type 变量中。然后通过 getType() 方法可以获取到泛型的实际类型。

0
看了该问题的人还看了