我正在尝试编写一个通用方法,只要输入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)
);
}
答案 0 :(得分:2)
您可能应该引入类型标记作为方法参数。您将无法获得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 config和自动装配提示