java - 如何使用泛型将类及其类型作为参数传递?

标签 java android generics

我试图传递一个类及其类型作为参数,但看起来 java 中不允许这样做。有谁知道如何使用泛型通过 T 类或 P 类?请检查这个简单的示例:

    class Car<P> {

    }

    class Sport {

    }

    main() {
       Sport sport = createInstance(Sport.class); // This is fine.
       Car car = createInstance(Car.class); // This is also fine.
       Car<Sport> sportCar = createInstance(Car<Sport>.class) // but this is not allowed. How can I pass "<Sport>" type?
    }  

    public <T> T createInstance(Class<T> classOfT) {
        T instance = classOfT.getDeclaredConstructor().newInstance();

        return instance;
    }

最佳答案

由于类型删除,

   Car<Sport> sportCar = createInstance(Car.class)

就足够了。通用类型信息<Sport>仅存在于编译时,而不存在于运行时。

关于java - 如何使用泛型将类及其类型作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57894019/

相关文章:

android - 除非您更新 Google Play 服务,否则如何要求更新的播放服务并添加 "This app won' t 运行”

java - 将 EditText 文本绑定(bind)到变量?

java - 在 Java 中传递多维 POST 数据

java - 使 JTable 单元格可编辑 - 但*不能*通过双击

java - 数据库更新后出现 ORA-01733(此处不允许使用虚拟列)

Android studio 3.1 在导入项目时出错

Java:了解泛型数组的类型删除

java - 从通用类型参数中检索高级信息

java - 如何允许两种类型的数据作为参数

java - Java实现Windows资源管理器图标叠加的方法