首页 > 解决方案 > 从父类获取泛型 Class 对象

问题描述

在我的程序中,我有一个带有泛型参数的抽象基类。在这个类中,我必须获取Class子类中使用的泛型参数的对象。目前我这样做:

public abstract class BaseItem<T>
    public BaseItem(int id, Class<T> childGenricClass) {
        //...
    }
}

public class MainItem extends BaseItem<String> {
    public MainItem(int id) {
        super(id, String.class);
    }
}

我真的必须通过构造函数将类传递给父类,还是在 Java 中有一种方法可以从父类动态获取它?

标签: java

解决方案


这是正确的,因为JVM在运行时删除所有类型。在运行时,您的Tis always Object,因此您的应用程序没有任何机会找出是什么类T。因此,您必须另外添加Class<T> cls变量。


推荐阅读