繁体   English   中英

Java泛型-我在这里做错了什么?

[英]Java Generics - What am I doing wrong here?

谁能告诉我为什么看跌期权给了我一个错误?

static HashMap<Class, ? extends BaseSystem> systems;

public <T extends BaseSystem> EntityManager()//constructor
{
    systems=new HashMap<Class, T>();
} 

public static <T extends BaseSystem> void addSystem(Class c, T system)//store a system for later reference
{
    systems.put(c, system);
}

最可能的问题是,第一种方法中的T和第二种方法中的T不能自动地认为是相同的。 在其他作品中,您有两种不同的类型,它们都扩展了BaseSystem,但是可能不相关。

您需要在类上定义一次T并一致地使用它,或者只使用BaseSystem而不使用泛型。

顺便说一句:在更基本的层面上,不要混淆静态初始化和实例初始化。 如果要在构造函数中设置静态字段,则会遇到设计问题。

班级和T系统之间有关系吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM