java - 我可以创建一个作为泛型类型参数的成员变量吗?

标签 java generics singleton type-parameter member-variables

我有很多围绕服务的代理类,并且所有的看起来(几乎)相同。我可以通过使用泛型单例类以某种方式减少代码重复吗?它将ServicePort类作为类型参数>?

这是我完全错误的代码,我想要开始:

public class MyProxy<S extends Service, P extends BindingProvider>
{
  private static final MyProxy<S extends Service, P extends BindingProvider> instance
      = new Proxy<S extends Service, P extends BindingProvider>();
  private S service;

  public static MyProxy<S extends Service, P extends BindingProvider> getInstance() {
    return instance;
  }

}
  • 我认为 MyProxy类型参数是正确的。
  • 我可以声明静态实例单例成员变量吗?如何声明?
  • 成员变量 service 应该更简单,我可以有一个类型参数作为成员吗?
  • getInstance()返回类型怎么样,怎么写?

最佳答案

这是与我的第一条评论相对应的代码。正如我所说,这涉及未经检查的强制转换。

public static class MyProxy<S extends Service, P extends BindingProvider> {

    private static final MyProxy<? extends Service, ? extends BindingProvider> instance = new Proxy<Service, BindingProvider>();

    private S service;

    public static <S extends Service, P extends BindingProvider> MyProxy<S, P> getInstance() {
        return (MyProxy<S, P>) instance;
    }
}

关于java - 我可以创建一个作为泛型类型参数的成员变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18759198/

相关文章:

java - 将 Jboss 插件更新到 eclipse 时无法访问 Marketplace

java - guice 的 TypeLiteral 是如何工作的?

c# - 我可以在 C# 中声明一个接口(interface)方法来返回泛型接口(interface)吗?

Java EE 单例反射注入(inject)

iphone - 是否需要保存对单例 objective-c 对象的引用,以便在 IOS 应用程序的整个生命周期中保存它?

java - 不区分大小写的字符串过滤器

java - HTTP 状态 404 - 请求的路径无效

java - 将带有单引号的字符串从 Java 插入到 Postgresql 中

Java 泛型转换不符合预期

java - 如何在 Java 代码中使用 scala.None