[英]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.