我正在使用Spring 4。 我有以下Java Config片段:
@Bean
public Service<FooType> serviceBean() {
return new ServiceImpl<FooType>(FooType.class);
}
以下的Spring Bean:
public class ServiceImpl<T> implements Service {
private final Class<T> clazz;
public ValidateOrderServiceImpl(final Class<T> clazz)
this.clazz = clazz;
}
}
我宁愿不必复制type参数,但如果我不作为构造函数传入,则T为null,即以下内容不起作用。这是预期的。我已经看过一些讨论擦除的相关帖子 - 以及如何使用类型参数来解析正确使用的bean - 但是在我的问题上没有看到明确的...
// Java Config Snippet (desired)
@Bean
public Service<FooType> serviceBean() {
return new ServiceImpl<FooType>();
}
// Spring Bean(所需)
public class ServiceImpl<T> implements Service {
// T populated..
private final Class<T> clazz;
}
由于
答案 0 :(得分:1)
你原来的很好并且(几乎)是获得相应类型参数的Class
对象的唯一方法。
你可以在这里删除显式类型参数
@Bean
public Service<FooType> serviceBean() {
return new ServiceImpl<>(FooType.class);
// ^^
}