首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从泛型类或方法的成员中获取T的类型?

要从泛型类或方法的成员中获取T的类型,可以使用反射API。在Java中,可以使用Type类和ParameterizedType接口来获取泛型类型。以下是一个示例:

代码语言:java
复制
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class GenericExample<T> {
    private final Class<T> clazz;

    public GenericExample() {
        Type superclass = getClass().getGenericSuperclass();
        if (superclass instanceof ParameterizedType) {
            ParameterizedType parameterized = (ParameterizedType) superclass;
            Type type = parameterized.getActualTypeArguments()[0];
            if (type instanceof Class) {
                clazz = (Class<T>) type;
            } else {
                throw new IllegalArgumentException("Type parameter T must be a Class");
            }
        } else {
            throw new IllegalArgumentException("GenericExample must be parameterized");
        }
    }

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

    public static void main(String[] args) {
        GenericExample<String> example = new GenericExample<>();
        System.out.println("Type of T is: " + example.getType().getName());
    }
}

在这个示例中,我们创建了一个名为GenericExample的泛型类,它具有一个类型参数T。在构造函数中,我们使用反射API来获取泛型类型T的实际类型。然后,我们将该类型存储在一个名为clazzClass对象中,并提供一个getType方法来获取该类型。

main方法中,我们创建了一个GenericExample<String>实例,并使用getType方法获取类型T的实际类型。在这种情况下,输出将是java.lang.String

这种方法可以用于获取泛型类或方法的成员中的任何类型参数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

3分54秒

PS使用教程:如何在Mac版Photoshop中制作烟花效果?

16分8秒

人工智能新途-用路由器集群模仿神经元集群

领券