首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java泛型类和非泛型类

Java泛型类和非泛型类
EN

Stack Overflow用户
提问于 2014-03-31 11:34:52
回答 1查看 782关注 0票数 2

我有点担心非泛型类中的泛型类型。我正在开发一个API,其中我有一个数据模型,其中有一个单例DataModelManager。这个DataModelManager创建DataFactory?扩展DMAbstractObject,其中DMAbstractObject是一个抽象类,告诉“I‘s DataModel类”。

因此,基本上,当我想要创建一个对象时,我使用以下代码:

DataModelManager.getInstance().getDataFactory(DMLine.class).newElement();线= DMLine线

问题是我正在使用这个函数

代码语言:javascript
复制
public DataFactory<? extends DMAbstractObject> getDataFactory(Class<? extends DMAbstractObject> clazz)

因此,Java无法知道返回的DataFactory来自与参数clazz相同的类型。因为“扩展DMAbstractObject”告诉“任何扩展DMAbstractObject的对象”。在泛型类中,我可以使用:"T扩展DMAbstractObject“,但这里不使用。

我的DataModelManager :公共类DataModelManager {

代码语言:javascript
复制
     private static DataModelManager INSTANCE;

     public static DataModelManager getInstance(){
        if(INSTANCE == null)
            INSTANCE = new DataModelManager();
        return INSTANCE;
     }  


     private HashMap<Class<? extends DMAbstractObject>, DataFactory<? extends DMAbstractObject>> dataListMap;

      /**
      * Constructor
     */
     private DataModelManager(){
        dataListMap = new HashMap<Class<? extends DMAbstractObject>, DataFactory<? extends DMAbstractObject>>();

     }

     public DataFactory<? extends DMAbstractObject> getDataFactory(Class<? extends DMAbstractObject> clazz){

         if(!dataListMap.containsKey(clazz)){
            DataFactory<? extends DMAbstractObject> dataList = new DataFactory<>(clazz);
            dataListMap.put(clazz, dataList);
            return dataList;
         }

         return dataListMap.get(clazz);


     }
 }

这不是一个大问题,因为它只导致类型安全警告(未经检查的转换从DataFactory捕获#2-of?)将DMAbstractObject扩展到DataFactory DMLine),但我想知道是否有适当的方法来做到这一点。

谢谢你的回答!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-31 11:40:16

代码语言:javascript
复制
public <T extends DMAbstractObject> DataFactory<T> getDataFactory(Class<T> clazz)

使用泛型锁定类型。泛型可以在方法级别定义,也可以在类级别定义。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22760513

复制
相关文章

相似问题

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