java - 通用 Spring Bean - 复制类型参数

标签 java spring generics

我正在使用 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);
    //                    ^^
}

关于java - 通用 Spring Bean - 复制类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28072298/

相关文章:

java - 访问被其他线程修改的Set

c# - 具有相同基类的泛型的泛型列表

java - Spring Security 基本身份验证提示出现

java - 如何在java中给定时间间隔更新数据库中的值?

java - 使用 Spring WebserviceTemplate 发送安全请求

用于类似动态类型转换的 Java 反射/通用类型

java - 在 Java 中使用泛型和类型推断的问题

java - 如何修复 "java.lang.NoClassDefFoundError: com/google/api/client/http/HttpRequestInitializer"运行时错误?

java - 动态添加对象到数组

Java LinkedList 删除最后一个节点