通用 Spring Bean - 复制类型参数

Generic Spring Bean - duplicating type param

我正在使用 Spring 4. 我有以下 Java 配置片段:

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

我宁愿不必复制类型参数,但如果我不作为构造函数传入,则 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;

}

谢谢

您最初拥有的很好,并且(几乎)是获取相应类型参数的 Class 对象的唯一方法。

你可以在这里去掉显式类型参数

@Bean
public Service<FooType> serviceBean() {
    return new ServiceImpl<>(FooType.class);
    //                    ^^
}