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

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系统之间是否存在任何关系?

09-27 22:38