首页 > 解决方案 > 如何动态指定 Java 泛型类

问题描述

如果我指定一个返回泛型类的方法,我该怎么做才能动态指定泛型类的类型?例如

  try {
        Class c =Class.forName(keytype);
        Class d= Class.forName(valuetype);
        KafkaConsumer<c,d> consumerconsumer = new KafkaConsumer<c,d>(PropertiesUtil.getPropsObj(configPath));
        return consumer ;
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }


}

但是上面的代码不行。我该怎么做才能做到这一点?

标签: javakafka-consumer-apigeneric-programming

解决方案


通用语法仅适用于编译时。泛型类或方法中的任何类型在运行时都不可用。这称为类型擦除。所以你不能做你想做的事,至少不能这样。

根据您尝试解决的原始问题,您可以改用通配符


推荐阅读