0

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

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);
}
4

1 回答 1

15

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

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

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

T类和系统之间有什么关系吗?

于 2013-01-14T08:44:38.240 回答