有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java反射:如何获取方法的泛型类型的类?

我试图编写一个泛型方法,只要将Type作为输入就可以访问相应的类。 请注意,没有向方法传递任何参数(如已回答的here),只指定了类型

以下是相应的代码:

@Bean
public <T> ConsumerFactory <String, T> consumerFactory() {
 Class <T> genericClass = null; //How to get the class corresponding to type T ? 

 return new DefaultKafkaConsumerFactory<>(consumerConfigs(),
  new StringDeserializer(),
  new JsonDeserializer<>(genericClass, objectMapper)
 );
}

共 (1) 个答案

  1. # 1 楼答案

    您可能应该引入一个类型标记作为方法参数。您将无法获取T信息,因为它在编译过程中被删除

    @Bean
    public ConsumerFactory<String, String> newStringConsumerFactory() {
      return newConsumerFactory(String.class);
    }
    
    private <T> ConsumerFactory <String, T> newConsumerFactory(Class<T> t) {
     return new DefaultKafkaConsumerFactory<>(consumerConfigs(),
      new StringDeserializer(),
      new JsonDeserializer<>(t, objectMapper)
     );
    }
    

    您可以尝试深入研究反射和^{},但它不能使@Configuration可读。这里的冗长和遵守标准很重要,因为大多数IDE都支持Spring配置和自动连线提示