繁体   English   中英

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

[英]Java reflection: how to get the class of a method's generic type?

我正在尝试编写一个通用方法,只要将Type作为输入即可访问相应的类。 请注意,没有参数传递给方法(如已经回答了在这里 ),但仅指定类型。

这是相应的代码:

@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)
 );
}

您可能应该引入类型标记作为方法参数。 您将无法获得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)
 );
}

您可以尝试深入了解反射和Method.getGenericParameterTypes()但不会使@Configuration可读。 详细信息和遵守标准非常重要,因为大多数IDE都支持Spring配置和自动装配提示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM