谁能告诉我为什么看跌期权给了我一个错误?
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
系统之间是否存在任何关系?