首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >泛型:基于泛型类的泛型类

泛型:基于泛型类的泛型类
EN

Stack Overflow用户
提问于 2012-07-09 01:40:17
回答 6查看 107关注 0票数 0

我正在尝试创建一个基于具有基于泛型的集合的类的泛型服务

代码语言:javascript
复制
public class GenericClass<T> {
   List<T> results;
   public List<T> getResults() {
    return results;
   }
}

我只是不确定如何创建一个基于此GenericClass并具有T的具体实现的服务。

代码语言:javascript
复制
public class ServiceManagerImpl<GenericClass<T>> implements ServiceManager<GenericClass<T>> {
    public GenericClass<T> getMyClass() {
    ...
    }
}

但是编译器不喜欢这样。你知道该怎么做吗?

Marc

EN

回答 6

Stack Overflow用户

发布于 2012-07-09 13:11:24

你已经接近了..。只需传递T

代码语言:javascript
复制
public class ServiceManagerImpl<T> implements ServiceManager<GenericClass<T>> {
    public GenericClass<T> getMyClass() {
    ...
    }
}
票数 2
EN

Stack Overflow用户

发布于 2012-07-09 12:29:55

<>之间的内容称为,并且GenericClass<T>在声明中不是有效的类型参数。

引用自java generic guide

泛型类的定义格式如下:

类name { /* ... */ }

类型参数部分位于类名之后,由尖括号(<>)分隔。它指定类型参数(也称为类型变量) T1、T2、...和Tn。

因此,您需要在实现中使用GenericClass<T>,而不是在声明中。

代码语言:javascript
复制
// declaration
public class ServiceManagerImpl<YourGenericType> implements ServiceManager<YourGenericType> {
    public YourGenericType getMyClass() {
    ...
    }
}

// implementation
ServiceManager<GenericClass<Object>> sm = new ServiceManagerImpl<GenericClass<Object>>();
票数 0
EN

Stack Overflow用户

发布于 2012-07-09 12:37:03

代码语言:javascript
复制
public class ServiceManagerImpl<T extends GenericClass<T>> implements ServiceManager<T extends  GenericClass<T>> {
      public GenericClass<T> getMyClass() {
          ...
      }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11385220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档